12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
- package org.apache.cordova.engine;
-
- import android.content.Context;
- import android.util.AttributeSet;
- import android.view.KeyEvent;
- import android.webkit.WebChromeClient;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
-
- import org.apache.cordova.CordovaInterface;
- import org.apache.cordova.CordovaWebView;
- import org.apache.cordova.CordovaWebViewEngine;
-
- /**
- * Custom WebView subclass that enables us to capture events needed for Cordova.
- */
- public class SystemWebView extends WebView implements CordovaWebViewEngine.EngineView {
- private SystemWebViewClient viewClient;
- SystemWebChromeClient chromeClient;
- private SystemWebViewEngine parentEngine;
- private CordovaInterface cordova;
-
- public SystemWebView(Context context) {
- this(context, null);
- }
-
- public SystemWebView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- // Package visibility to enforce that only SystemWebViewEngine should call this method.
- void init(SystemWebViewEngine parentEngine, CordovaInterface cordova) {
- this.cordova = cordova;
- this.parentEngine = parentEngine;
- if (this.viewClient == null) {
- setWebViewClient(new SystemWebViewClient(parentEngine));
- }
-
- if (this.chromeClient == null) {
- setWebChromeClient(new SystemWebChromeClient(parentEngine));
- }
- }
-
- @Override
- public CordovaWebView getCordovaWebView() {
- return parentEngine != null ? parentEngine.getCordovaWebView() : null;
- }
-
- @Override
- public void setWebViewClient(WebViewClient client) {
- viewClient = (SystemWebViewClient)client;
- super.setWebViewClient(client);
- }
-
- @Override
- public void setWebChromeClient(WebChromeClient client) {
- chromeClient = (SystemWebChromeClient)client;
- super.setWebChromeClient(client);
- }
-
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- Boolean ret = parentEngine.client.onDispatchKeyEvent(event);
- if (ret != null) {
- return ret.booleanValue();
- }
- return super.dispatchKeyEvent(event);
- }
- }
|