| Index: content/browser/android/content_view_core_impl.cc
|
| diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc
|
| index 49fe6293ce412d8550d798b60515865fe3afa53b..14d88bc5ff90afe15a843c447b27a0804a66075b 100644
|
| --- a/content/browser/android/content_view_core_impl.cc
|
| +++ b/content/browser/android/content_view_core_impl.cc
|
| @@ -210,11 +210,13 @@ ContentViewCore* ContentViewCore::GetNativeContentViewCore(JNIEnv* env,
|
| Java_ContentViewCore_getNativeContentViewCore(env, obj));
|
| }
|
|
|
| -ContentViewCoreImpl::ContentViewCoreImpl(JNIEnv* env,
|
| - jobject obj,
|
| - WebContents* web_contents,
|
| - ui::ViewAndroid* view_android,
|
| - ui::WindowAndroid* window_android)
|
| +ContentViewCoreImpl::ContentViewCoreImpl(
|
| + JNIEnv* env,
|
| + jobject obj,
|
| + WebContents* web_contents,
|
| + ui::ViewAndroid* view_android,
|
| + ui::WindowAndroid* window_android,
|
| + jobject java_bridge_retained_object_set)
|
| : WebContentsObserver(web_contents),
|
| java_ref_(env, obj),
|
| web_contents_(static_cast<WebContentsImpl*>(web_contents)),
|
| @@ -245,6 +247,10 @@ ContentViewCoreImpl::ContentViewCoreImpl(JNIEnv* env,
|
| BuildUserAgentFromOSAndProduct(kLinuxInfoStr, product);
|
| web_contents->SetUserAgentOverride(spoofed_ua);
|
|
|
| + java_bridge_dispatcher_host_manager_.reset(
|
| + new JavaBridgeDispatcherHostManager(web_contents,
|
| + java_bridge_retained_object_set));
|
| +
|
| InitWebContents();
|
| }
|
|
|
| @@ -1278,8 +1284,7 @@ void ContentViewCoreImpl::SetAllowJavascriptInterfacesInspection(
|
| JNIEnv* env,
|
| jobject obj,
|
| jboolean allow) {
|
| - web_contents_->java_bridge_dispatcher_host_manager()
|
| - ->SetAllowObjectContentsInspection(allow);
|
| + java_bridge_dispatcher_host_manager_->SetAllowObjectContentsInspection(allow);
|
| }
|
|
|
| void ContentViewCoreImpl::AddJavascriptInterface(
|
| @@ -1287,31 +1292,26 @@ void ContentViewCoreImpl::AddJavascriptInterface(
|
| jobject /* obj */,
|
| jobject object,
|
| jstring name,
|
| - jclass safe_annotation_clazz,
|
| - jobject retained_object_set) {
|
| + jclass safe_annotation_clazz) {
|
| ScopedJavaLocalRef<jobject> scoped_object(env, object);
|
| ScopedJavaLocalRef<jclass> scoped_clazz(env, safe_annotation_clazz);
|
| - JavaObjectWeakGlobalRef weak_retained_object_set(env, retained_object_set);
|
|
|
| // JavaBoundObject creates the NPObject with a ref count of 1, and
|
| // JavaBridgeDispatcherHostManager takes its own ref.
|
| - JavaBridgeDispatcherHostManager* java_bridge =
|
| - web_contents_->java_bridge_dispatcher_host_manager();
|
| - java_bridge->SetRetainedObjectSet(weak_retained_object_set);
|
| - NPObject* bound_object =
|
| - JavaBoundObject::Create(scoped_object,
|
| - scoped_clazz,
|
| - java_bridge->AsWeakPtr(),
|
| - java_bridge->GetAllowObjectContentsInspection());
|
| - java_bridge->AddNamedObject(ConvertJavaStringToUTF16(env, name),
|
| - bound_object);
|
| + NPObject* bound_object = JavaBoundObject::Create(
|
| + scoped_object,
|
| + scoped_clazz,
|
| + java_bridge_dispatcher_host_manager_->AsWeakPtr(),
|
| + java_bridge_dispatcher_host_manager_->GetAllowObjectContentsInspection());
|
| + java_bridge_dispatcher_host_manager_->AddNamedObject(
|
| + ConvertJavaStringToUTF16(env, name), bound_object);
|
| blink::WebBindings::releaseObject(bound_object);
|
| }
|
|
|
| void ContentViewCoreImpl::RemoveJavascriptInterface(JNIEnv* env,
|
| jobject /* obj */,
|
| jstring name) {
|
| - web_contents_->java_bridge_dispatcher_host_manager()->RemoveNamedObject(
|
| + java_bridge_dispatcher_host_manager_->RemoveNamedObject(
|
| ConvertJavaStringToUTF16(env, name));
|
| }
|
|
|
| @@ -1688,12 +1688,14 @@ jlong Init(JNIEnv* env,
|
| jobject obj,
|
| jlong native_web_contents,
|
| jlong view_android,
|
| - jlong window_android) {
|
| + jlong window_android,
|
| + jobject retained_objects_set) {
|
| ContentViewCoreImpl* view = new ContentViewCoreImpl(
|
| env, obj,
|
| reinterpret_cast<WebContents*>(native_web_contents),
|
| reinterpret_cast<ui::ViewAndroid*>(view_android),
|
| - reinterpret_cast<ui::WindowAndroid*>(window_android));
|
| + reinterpret_cast<ui::WindowAndroid*>(window_android),
|
| + retained_objects_set);
|
| return reinterpret_cast<intptr_t>(view);
|
| }
|
|
|
|
|