Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(491)

Unified Diff: android_webview/browser/browser_view_renderer_impl.cc

Issue 12697002: [Android WebView] Provide more information about WebView for web debugging (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/browser/browser_view_renderer_impl.cc
diff --git a/android_webview/browser/browser_view_renderer_impl.cc b/android_webview/browser/browser_view_renderer_impl.cc
index ef1f9d189e24e90545a8e54f00b0ecb25fe7c868..2cd4a856dd9963e2c4f00e7068eec57ce3ef0343 100644
--- a/android_webview/browser/browser_view_renderer_impl.cc
+++ b/android_webview/browser/browser_view_renderer_impl.cc
@@ -104,6 +104,36 @@ static bool RasterizeIntoBitmap(JNIEnv* env,
namespace android_webview {
+namespace {
+
+const void* kBrowserViewRendererUserDataKey = &kBrowserViewRendererUserDataKey;
+
+class BrowserViewRendererUserData : public base::SupportsUserData::Data {
joth 2013/03/11 16:36:12 ah no - afraid we duplicated work here..! Mine's a
+ public:
+ BrowserViewRendererUserData(BrowserViewRenderer* ptr) : bvr_(ptr) {}
+
+ static BrowserViewRenderer* GetBrowserViewRenderer(
+ content::WebContents* web_contents) {
+ if (!web_contents)
+ return NULL;
+ BrowserViewRendererUserData* data =
+ reinterpret_cast<BrowserViewRendererUserData*>(
+ web_contents->GetUserData(kBrowserViewRendererUserDataKey));
+ return data ? data->bvr_ : NULL;
+ }
+
+ private:
+ BrowserViewRenderer* bvr_;
+};
+
+} // namespace
+
+// static
+BrowserViewRenderer* BrowserViewRenderer::FromWebContents(
+ content::WebContents* web_contents) {
+ return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
+}
+
// static
BrowserViewRendererImpl* BrowserViewRendererImpl::Create(
BrowserViewRenderer::Client* client,
@@ -121,6 +151,7 @@ BrowserViewRendererImpl::BrowserViewRendererImpl(
view_clip_layer_(cc::Layer::create()),
transform_layer_(cc::Layer::create()),
scissor_clip_layer_(cc::Layer::create()),
+ view_attached_(false),
view_visible_(false),
compositor_visible_(false),
is_composite_pending_(false),
@@ -165,6 +196,7 @@ void BrowserViewRendererImpl::SetContents(ContentViewCore* content_view_core) {
previous_content_view_core->RemoveFrameInfoCallback(
update_frame_info_callback_);
}
+ web_contents_->RemoveUserData(kBrowserViewRendererUserDataKey);
}
web_contents_ = content_view_core ?
@@ -174,6 +206,9 @@ void BrowserViewRendererImpl::SetContents(ContentViewCore* content_view_core) {
if (!content_view_core)
return;
+ web_contents_->SetUserData(kBrowserViewRendererUserDataKey,
+ new BrowserViewRendererUserData(this));
+
content_view_core->AddFrameInfoCallback(update_frame_info_callback_);
dpi_scale_ = content_view_core->GetDpiScale();
@@ -524,15 +559,29 @@ void BrowserViewRendererImpl::OnSizeChanged(int width, int height) {
}
void BrowserViewRendererImpl::OnAttachedToWindow(int width, int height) {
+ view_attached_ = true;
view_size_ = gfx::Size(width, height);
view_clip_layer_->setBounds(view_size_);
}
void BrowserViewRendererImpl::OnDetachedFromWindow() {
+ view_attached_ = false;
view_visible_ = false;
SetCompositorVisibility(false);
}
+bool BrowserViewRendererImpl::IsAttachedToWindow() {
+ return view_attached_;
+}
+
+bool BrowserViewRendererImpl::IsViewVisible() {
+ return view_visible_;
+}
+
+gfx::Rect BrowserViewRendererImpl::GetScreenRect() {
+ return gfx::Rect(client_->GetLocationOnScreen(), view_size_);
+}
+
void BrowserViewRendererImpl::ScheduleComposite() {
TRACE_EVENT0("android_webview", "BrowserViewRendererImpl::ScheduleComposite");

Powered by Google App Engine
This is Rietveld 408576698