summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authorkristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-08 15:17:11 +0000
committerkristianm@chromium.org <kristianm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-08 15:17:11 +0000
commit0fa62a970086861cb9f7a7fc71adf4c55c96c7ed (patch)
tree1fe90ea076ef2c2c47e4e716916a2ec4449464b2 /android_webview
parent94f1edd203770570ea47b937e485a857081fb2ab (diff)
downloadchromium_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.h11
-rw-r--r--android_webview/browser/browser_view_renderer_impl.cc45
-rw-r--r--android_webview/browser/browser_view_renderer_impl.h4
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwContents.java12
-rw-r--r--android_webview/native/aw_contents.cc17
-rw-r--r--android_webview/native/aw_contents.h12
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;