| Index: android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..aa94be5f94c6af9d886c759c73b8e53d1704e578
|
| --- /dev/null
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| @@ -0,0 +1,83 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.android_webview;
|
| +
|
| +import android.view.ViewGroup;
|
| +
|
| +import org.chromium.base.JNINamespace;
|
| +import org.chromium.content.browser.ContentViewCore;
|
| +import org.chromium.content.common.CleanupReference;
|
| +
|
| +/**
|
| + * Exposes the native AwContents class, and together these classes wrap the ContentViewCore
|
| + * and Browser components that are required to implement Android WebView API. This is the
|
| + * primary entry point for the WebViewProvider implementation; it holds a 1:1 object
|
| + * relationship with application WebView instances.
|
| + * (We define this class independent of the hidden WebViewProvider interfaces, to allow
|
| + * continuous build & test in the open source SDK-based tree).
|
| + */
|
| +@JNINamespace("android_webview")
|
| +public class AwContents {
|
| +
|
| + private int mNativeAwContents;
|
| + private ContentViewCore mContentViewCore;
|
| +
|
| + private static final class DestroyRunnable implements Runnable {
|
| + private int mNativeAwContents;
|
| + private DestroyRunnable(int nativeAwContents) {
|
| + mNativeAwContents = nativeAwContents;
|
| + }
|
| + @Override
|
| + public void run() {
|
| + nativeDestroy(mNativeAwContents);
|
| + }
|
| + }
|
| +
|
| + private CleanupReference mCleanupReference;
|
| +
|
| + private AwContents(ContentViewCore contentViewCore,
|
| + AwWebContentsDelegate webContentsDelegate) {
|
| + }
|
| +
|
| + /**
|
| + * @param containerView the view-hierarchy item this object will be bound to.
|
| + * @param internalAccessAdapter to access private methods on containerView.
|
| + * @param contentViewCore requires an existing but not yet initialized instance. Will be
|
| + * initialized on return.
|
| + * @param webContentsDelegate will receive API callbacks from the underlying WebContents
|
| + * @param privateBrowsing whether this is a private browsing instance of WebView.
|
| + * @param isAccessFromFileURLsGrantedByDefault passed to ContentViewCore.initialize.
|
| + */
|
| + public AwContents(ViewGroup containerView,
|
| + ContentViewCore.InternalAccessDelegate internalAccessAdapter,
|
| + ContentViewCore contentViewCore, AwWebContentsDelegate webContentsDelegate,
|
| + boolean privateBrowsing, boolean isAccessFromFileURLsGrantedByDefault) {
|
| + mNativeAwContents = nativeInit(webContentsDelegate, privateBrowsing);
|
| + mContentViewCore = contentViewCore;
|
| + mCleanupReference = new CleanupReference(this, new DestroyRunnable(mNativeAwContents));
|
| +
|
| + // TODO: upstream the needed ContentViewCore initialization method.
|
| + // mContentViewCore.initialize(containerView, internalAccessAdapter, false,
|
| + // nativeGetWebContents(mNativeAwContents), isAccessFromFileURLsGrantedByDefault);
|
| + }
|
| +
|
| + public ContentViewCore getContentViewCore() {
|
| + return mContentViewCore;
|
| + }
|
| +
|
| + public void destroy() {
|
| + if (mContentViewCore != null) {
|
| + mContentViewCore.destroy();
|
| + mContentViewCore = null;
|
| + }
|
| + mCleanupReference.cleanupNow();
|
| + }
|
| +
|
| + private native int nativeInit(AwWebContentsDelegate webViewWebContentsDelegate,
|
| + boolean privateBrowsing);
|
| + private static native void nativeDestroy(int nativeAwContents);
|
| +
|
| + private native int nativeGetWebContents(int nativeAwContents);
|
| +}
|
|
|