diff options
author | kristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-08 15:17:11 +0000 |
---|---|---|
committer | kristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-08 15:17:11 +0000 |
commit | 0fa62a970086861cb9f7a7fc71adf4c55c96c7ed (patch) | |
tree | 1fe90ea076ef2c2c47e4e716916a2ec4449464b2 /android_webview | |
parent | 94f1edd203770570ea47b937e485a857081fb2ab (diff) | |
download | chromium_src-0fa62a970086861cb9f7a7fc71adf4c55c96c7ed.zip chromium_src-0fa62a970086861cb9f7a7fc71adf4c55c96c7ed.tar.gz chromium_src-0fa62a970086861cb9f7a7fc71adf4c55c96c7ed.tar.bz2 |
Fix for bug 235641, remove kOnNewPictureEnabled
This mode is now obsolete.
Android webview only patch that get stuck on different trybots each time.
Adding notry:
NOTRY=true
BUG=235641
R=joth@chromium.org
Review URL: https://codereview.chromium.org/14668007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198904 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
-rw-r--r-- | android_webview/browser/browser_view_renderer.h | 11 | ||||
-rw-r--r-- | android_webview/browser/browser_view_renderer_impl.cc | 45 | ||||
-rw-r--r-- | android_webview/browser/browser_view_renderer_impl.h | 4 | ||||
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/AwContents.java | 12 | ||||
-rw-r--r-- | android_webview/native/aw_contents.cc | 17 | ||||
-rw-r--r-- | android_webview/native/aw_contents.h | 12 |
6 files changed, 27 insertions, 74 deletions
diff --git a/android_webview/browser/browser_view_renderer.h b/android_webview/browser/browser_view_renderer.h index 5c485f0..fb08fc6 100644 --- a/android_webview/browser/browser_view_renderer.h +++ b/android_webview/browser/browser_view_renderer.h @@ -33,8 +33,7 @@ class BrowserViewRenderer { // Called when a new Picture is available. Needs to be enabled // via the EnableOnNewPicture method. - virtual void OnNewPicture( - const base::android::JavaRef<jobject>& picture) = 0; + virtual void OnNewPicture() = 0; // Called to get view's absolute location on the screen. virtual gfx::Point GetLocationOnScreen() = 0; @@ -70,12 +69,6 @@ class BrowserViewRenderer { virtual ~JavaHelper() {} }; - enum OnNewPictureMode { - kOnNewPictureDisabled = 0, - kOnNewPictureEnabled, - kOnNewPictureInvalidationOnly, - }; - // Content control methods. virtual void SetContents(content::ContentViewCore* content_view_core) = 0; @@ -88,7 +81,7 @@ class BrowserViewRenderer { // CapturePicture API methods. virtual base::android::ScopedJavaLocalRef<jobject> CapturePicture() = 0; - virtual void EnableOnNewPicture(OnNewPictureMode mode) = 0; + virtual void EnableOnNewPicture(bool enabled) = 0; // View update notifications. virtual void OnVisibilityChanged(bool view_visible, bool window_visible) = 0; diff --git a/android_webview/browser/browser_view_renderer_impl.cc b/android_webview/browser/browser_view_renderer_impl.cc index 94a59e1..43e2092 100644 --- a/android_webview/browser/browser_view_renderer_impl.cc +++ b/android_webview/browser/browser_view_renderer_impl.cc @@ -160,7 +160,7 @@ BrowserViewRendererImpl::BrowserViewRendererImpl( is_composite_pending_(false), dpi_scale_(1.0f), page_scale_(1.0f), - on_new_picture_mode_(kOnNewPictureDisabled), + new_picture_enabled_(false), last_frame_context_(NULL), web_contents_(NULL), update_frame_info_callback_( @@ -421,16 +421,14 @@ ScopedJavaLocalRef<jobject> BrowserViewRendererImpl::CapturePicture() { return java_helper_->RecordBitmapIntoPicture(env, jbitmap); } -void BrowserViewRendererImpl::EnableOnNewPicture(OnNewPictureMode mode) { - on_new_picture_mode_ = mode; +void BrowserViewRendererImpl::EnableOnNewPicture(bool enabled) { + new_picture_enabled_ = enabled; // TODO(leandrogracia): when SW rendering uses the compositor rather than // picture rasterization, send update the renderer side with the correct // listener state. (For now, we always leave render picture listener enabled). // render_view_host_ext_->EnableCapturePictureCallback(enabled); - //DCHECK(view_renderer_host_); - //view_renderer_host_->EnableCapturePictureCallback( - // on_new_picture_mode_ == kOnNewPictureEnabled); + // http://crbug.com/176945 } void BrowserViewRendererImpl::OnVisibilityChanged(bool view_visible, @@ -481,35 +479,17 @@ void BrowserViewRendererImpl::ScheduleComposite() { } skia::RefPtr<SkPicture> BrowserViewRendererImpl::GetLastCapturedPicture() { - // Use the latest available picture if the listener callback is enabled. - skia::RefPtr<SkPicture> picture; - if (on_new_picture_mode_ == kOnNewPictureEnabled) - picture = RendererPictureMap::GetInstance()->GetRendererPicture( - web_contents_->GetRoutingID()); - - // If not available or not in listener mode get it synchronously. - if (!picture) { - view_renderer_host_->CapturePictureSync(); - picture = RendererPictureMap::GetInstance()->GetRendererPicture( - web_contents_->GetRoutingID()); - } - - return picture; + // Get it synchronously. + view_renderer_host_->CapturePictureSync(); + return RendererPictureMap::GetInstance()->GetRendererPicture( + web_contents_->GetRoutingID()); } void BrowserViewRendererImpl::OnPictureUpdated(int process_id, int render_view_id) { - CHECK_EQ(web_contents_->GetRenderProcessHost()->GetID(), process_id); - if (render_view_id != web_contents_->GetRoutingID()) - return; - - // TODO(leandrogracia): this can be made unconditional once software rendering - // uses Ubercompositor. Until then this path is required for SW invalidations. - if (on_new_picture_mode_ == kOnNewPictureEnabled) - client_->OnNewPicture(CapturePicture()); + client_->OnNewPicture(); - // TODO(leandrogracia): delete when sw rendering uses Ubercompositor. - // Invalidation should be provided by the compositor only. + // TODO(mkosiba): Remove when invalidation path is re-implemented. Invalidate(); } @@ -539,11 +519,6 @@ void BrowserViewRendererImpl::ResetCompositor() { void BrowserViewRendererImpl::Invalidate() { if (view_visible_) client_->Invalidate(); - - // When not in invalidation-only mode onNewPicture will be triggered - // from the OnPictureUpdated callback. - if (on_new_picture_mode_ == kOnNewPictureInvalidationOnly) - client_->OnNewPicture(ScopedJavaLocalRef<jobject>()); } bool BrowserViewRendererImpl::RenderSW(SkCanvas* canvas) { diff --git a/android_webview/browser/browser_view_renderer_impl.h b/android_webview/browser/browser_view_renderer_impl.h index 459c7a3..211c877 100644 --- a/android_webview/browser/browser_view_renderer_impl.h +++ b/android_webview/browser/browser_view_renderer_impl.h @@ -57,7 +57,7 @@ class BrowserViewRendererImpl virtual void SetScrollForHWFrame(int x, int y) OVERRIDE; virtual bool DrawSW(jobject java_canvas, const gfx::Rect& clip) OVERRIDE; virtual base::android::ScopedJavaLocalRef<jobject> CapturePicture() OVERRIDE; - virtual void EnableOnNewPicture(OnNewPictureMode mode) OVERRIDE; + virtual void EnableOnNewPicture(bool enabled) OVERRIDE; virtual void OnVisibilityChanged( bool view_visible, bool window_visible) OVERRIDE; virtual void OnSizeChanged(int width, int height) OVERRIDE; @@ -131,7 +131,7 @@ class BrowserViewRendererImpl float page_scale_; gfx::Size view_size_; gfx::SizeF content_size_css_; - OnNewPictureMode on_new_picture_mode_; + bool new_picture_enabled_; // Used only for detecting Android View System context changes. // Not to be used between draw calls. diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 17bfdb5..3f4125c 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -129,6 +129,8 @@ public class AwContents { private DefaultVideoPosterRequestHandler mDefaultVideoPosterRequestHandler; + private boolean mNewPictureInvalidationOnly; + private static final class DestroyRunnable implements Runnable { private int mNativeAwContents; private DestroyRunnable(int nativeAwContents) { @@ -451,7 +453,8 @@ public class AwContents { * @param invalidationOnly Flag to call back only on invalidation without providing a picture. */ public void enableOnNewPicture(boolean enabled, boolean invalidationOnly) { - nativeEnableOnNewPicture(mNativeAwContents, enabled, invalidationOnly); + mNewPictureInvalidationOnly = invalidationOnly; + nativeEnableOnNewPicture(mNativeAwContents, enabled); } // This is no longer synchronous and just calls the Async version and return 0. @@ -1269,8 +1272,8 @@ public class AwContents { } @CalledByNative - public void onNewPicture(Picture picture) { - mContentsClient.onNewPicture(picture); + public void onNewPicture() { + mContentsClient.onNewPicture(mNewPictureInvalidationOnly ? null : capturePicture()); } // Called as a result of nativeUpdateLastHitTestData. @@ -1415,8 +1418,7 @@ public class AwContents { int clipW, int clipH); private native int nativeGetAwDrawGLViewContext(int nativeAwContents); private native Picture nativeCapturePicture(int nativeAwContents); - private native void nativeEnableOnNewPicture(int nativeAwContents, boolean enabled, - boolean invalidationOnly); + private native void nativeEnableOnNewPicture(int nativeAwContents, boolean enabled); private native void nativeInvokeGeolocationCallback( int nativeAwContents, boolean value, String requestingFrame); diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc index 58a89c2..131fd2e 100644 --- a/android_webview/native/aw_contents.cc +++ b/android_webview/native/aw_contents.cc @@ -474,11 +474,11 @@ void AwContents::Invalidate() { Java_AwContents_invalidate(env, obj.obj()); } -void AwContents::OnNewPicture(const JavaRef<jobject>& picture) { +void AwContents::OnNewPicture() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_AwContents_onNewPicture(env, obj.obj(), picture.obj()); + Java_AwContents_onNewPicture(env, obj.obj()); } base::android::ScopedJavaLocalRef<jbyteArray> @@ -653,17 +653,8 @@ ScopedJavaLocalRef<jobject> AwContents::CapturePicture(JNIEnv* env, void AwContents::EnableOnNewPicture(JNIEnv* env, jobject obj, - jboolean enabled, - jboolean invalidation_only) { - BrowserViewRenderer::OnNewPictureMode mode = - BrowserViewRenderer::kOnNewPictureDisabled; - if (enabled) { - mode = invalidation_only ? - BrowserViewRenderer::kOnNewPictureInvalidationOnly : - BrowserViewRenderer::kOnNewPictureEnabled; - } - - browser_view_renderer_->EnableOnNewPicture(mode); + jboolean enabled) { + browser_view_renderer_->EnableOnNewPicture(enabled); } } // namespace android_webview diff --git a/android_webview/native/aw_contents.h b/android_webview/native/aw_contents.h index 5466c6f..751368c 100644 --- a/android_webview/native/aw_contents.h +++ b/android_webview/native/aw_contents.h @@ -40,12 +40,6 @@ class AwContents : public FindHelper::Listener, public IconHelper::Listener, public BrowserViewRenderer::Client { public: - enum OnNewPictureMode { - kOnNewPictureDisabled = 0, - kOnNewPictureEnabled, - kOnNewPictureInvalidationOnly, - }; - // Returns the AwContents instance associated with |web_contents|, or NULL. static AwContents* FromWebContents(content::WebContents* web_contents); @@ -113,8 +107,7 @@ class AwContents : public FindHelper::Listener, jobject obj); void EnableOnNewPicture(JNIEnv* env, jobject obj, - jboolean enabled, - jboolean invalidation_only); + jboolean enabled); // Geolocation API support void ShowGeolocationPrompt(const GURL& origin, base::Callback<void(bool)>); @@ -141,8 +134,7 @@ class AwContents : public FindHelper::Listener, // BrowserViewRenderer::Client implementation. virtual void Invalidate() OVERRIDE; - virtual void OnNewPicture( - const base::android::JavaRef<jobject>& picture) OVERRIDE; + virtual void OnNewPicture() OVERRIDE; virtual gfx::Point GetLocationOnScreen() OVERRIDE; virtual void OnPageScaleFactorChanged(float page_scale_factor) OVERRIDE; |