forked from sanyaade-mobiledev/chromium.src
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Android WebView] Migrate the rendering code to a separate set of cla…
…sses. It takes from https://codereview.chromium.org/11823027/ and assumes SW rendering and Capture Picture to be ready and enabled. Most changes just move around code. The major structural changes are: - Introduce a browser-layer view renderer interface and move the code to its implementation. - Take out the rendering-related IPC to its own separate set of host/renderer classes. - Change the way the view hierarchy and the compositor are initialized. Now they are created and set on BrowserViewRendererImpl construction. - Content is now provided via a ContentViewCore object when initialized, updating the layer to use and the WebContents to observe. - Remove/update the DEPS and gyp changes introduced to support rendering in the native layer. BUG=167913,167908,161409 NOTRY=true Review URL: https://chromiumcodereview.appspot.com/12041009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182710 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
leandrogracia@chromium.org
committed
Feb 15, 2013
1 parent
b0ca197
commit 6f9281c
Showing
24 changed files
with
1,259 additions
and
715 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
// Copyright (c) 2013 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. | ||
|
||
#ifndef ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_H_ | ||
#define ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_H_ | ||
|
||
#include "base/android/scoped_java_ref.h" | ||
|
||
struct AwDrawGLInfo; | ||
|
||
namespace content { | ||
class ContentViewCore; | ||
} | ||
|
||
namespace gfx { | ||
class Rect; | ||
} | ||
|
||
namespace android_webview { | ||
|
||
// Interface for all the WebView-specific content rendering operations. | ||
// Provides software and hardware rendering and the Capture Picture API. | ||
class BrowserViewRenderer { | ||
public: | ||
class Client { | ||
public: | ||
// Called to trigger view invalidations. | ||
virtual void Invalidate() = 0; | ||
|
||
// 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; | ||
|
||
protected: | ||
virtual ~Client() {} | ||
}; | ||
|
||
// Delegate to perform rendering actions involving Java objects. | ||
class JavaHelper { | ||
public: | ||
// Creates a RGBA_8888 Java Bitmap object of the requested size. | ||
virtual base::android::ScopedJavaLocalRef<jobject> CreateBitmap( | ||
JNIEnv* env, | ||
int width, | ||
int height) = 0; | ||
|
||
// Draws the provided Java Bitmap into the provided Java Canvas. | ||
virtual void DrawBitmapIntoCanvas( | ||
JNIEnv* env, | ||
const base::android::JavaRef<jobject>& jbitmap, | ||
const base::android::JavaRef<jobject>& jcanvas) = 0; | ||
|
||
// Creates a Java Picture object that records drawing the provided Bitmap. | ||
virtual base::android::ScopedJavaLocalRef<jobject> RecordBitmapIntoPicture( | ||
JNIEnv* env, | ||
const base::android::JavaRef<jobject>& jbitmap) = 0; | ||
|
||
protected: | ||
virtual ~JavaHelper() {} | ||
}; | ||
|
||
enum OnNewPictureMode { | ||
kOnNewPictureDisabled = 0, | ||
kOnNewPictureEnabled, | ||
kOnNewPictureInvalidationOnly, | ||
}; | ||
|
||
// Content control methods. | ||
virtual void SetContents(content::ContentViewCore* content_view_core) = 0; | ||
|
||
// Hardware rendering methods. | ||
virtual void DrawGL(AwDrawGLInfo* draw_info) = 0; | ||
virtual void SetScrollForHWFrame(int x, int y) = 0; | ||
|
||
// Software rendering methods. | ||
virtual bool DrawSW(jobject java_canvas, const gfx::Rect& clip_bounds) = 0; | ||
|
||
// CapturePicture API methods. | ||
virtual base::android::ScopedJavaLocalRef<jobject> CapturePicture() = 0; | ||
virtual void EnableOnNewPicture(OnNewPictureMode mode) = 0; | ||
|
||
// View update notifications. | ||
virtual void OnVisibilityChanged(bool view_visible, bool window_visible) = 0; | ||
virtual void OnSizeChanged(int width, int height) = 0; | ||
virtual void OnAttachedToWindow(int width, int height) = 0; | ||
virtual void OnDetachedFromWindow() = 0; | ||
|
||
virtual ~BrowserViewRenderer() {} | ||
}; | ||
|
||
} // namespace android_webview | ||
|
||
#endif // ANDROID_WEBVIEW_BROWSER_BROWSER_VIEW_RENDERER_H_ |
Oops, something went wrong.