| Index: android_webview/native/aw_contents.cc
|
| diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
|
| index 3c3b85be2471f676ebc845f9093e8d226c41b37a..3f2b7f8658ddfe96d2700df4adb1853b33c3bdd9 100644
|
| --- a/android_webview/native/aw_contents.cc
|
| +++ b/android_webview/native/aw_contents.cc
|
| @@ -180,16 +180,15 @@ AwBrowserPermissionRequestDelegate* AwBrowserPermissionRequestDelegate::FromID(
|
| }
|
|
|
| AwContents::AwContents(scoped_ptr<WebContents> web_contents)
|
| - : shared_renderer_state_(
|
| - this, BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)),
|
| + : shared_renderer_state_(nullptr),
|
| browser_view_renderer_(
|
| - this, BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| + this,
|
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
|
| base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisablePageVisibility)),
|
| web_contents_(std::move(web_contents)),
|
| renderer_manager_key_(GLViewRendererManager::GetInstance()->NullKey()) {
|
| base::subtle::NoBarrier_AtomicIncrement(&g_instance_count, 1);
|
| - browser_view_renderer_.SetSharedRendererState(&shared_renderer_state_);
|
| icon_helper_.reset(new IconHelper(web_contents_.get()));
|
| icon_helper_->SetListener(this);
|
| web_contents_->SetUserData(android_webview::kAwContentsUserDataKey,
|
| @@ -210,6 +209,21 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents)
|
| AwContentsLifecycleNotifier::OnWebViewCreated();
|
| }
|
|
|
| +void AwContents::CreateSharedRendererState() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(!shared_renderer_state_);
|
| + shared_renderer_state_ = new SharedRendererState(
|
| + BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI));
|
| + shared_renderer_state_->SetClient(this);
|
| + browser_view_renderer_.SetSharedRendererState(shared_renderer_state_);
|
| +}
|
| +
|
| +jlong AwContents::CreateSharedRendererState(JNIEnv* env,
|
| + const JavaParamRef<jobject>& obj) {
|
| + CreateSharedRendererState();
|
| + return reinterpret_cast<intptr_t>(shared_renderer_state_);
|
| +}
|
| +
|
| void AwContents::SetJavaPeers(
|
| JNIEnv* env,
|
| const JavaParamRef<jobject>& obj,
|
| @@ -364,7 +378,7 @@ jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) {
|
| jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env,
|
| const JavaParamRef<jobject>& obj) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - return reinterpret_cast<intptr_t>(&shared_renderer_state_);
|
| + return reinterpret_cast<intptr_t>(shared_renderer_state_);
|
| }
|
|
|
| namespace {
|
| @@ -895,7 +909,7 @@ void AwContents::OnAttachedToWindow(JNIEnv* env,
|
| void AwContents::OnDetachedFromWindow(JNIEnv* env,
|
| const JavaParamRef<jobject>& obj) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - shared_renderer_state_.DeleteHardwareRendererOnUI();
|
| + shared_renderer_state_->DeleteHardwareRendererOnUI();
|
| browser_view_renderer_.OnDetachedFromWindow();
|
| }
|
|
|
| @@ -1234,7 +1248,7 @@ void AwContents::TrimMemory(JNIEnv* env,
|
| return;
|
|
|
| if (level >= TRIM_MEMORY_MODERATE)
|
| - shared_renderer_state_.DeleteHardwareRendererOnUI();
|
| + shared_renderer_state_->DeleteHardwareRendererOnUI();
|
|
|
| browser_view_renderer_.TrimMemory();
|
| }
|
|
|