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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/browser/browser_view_renderer_impl.h" 5 #include "android_webview/browser/browser_view_renderer_impl.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 #include <sys/system_properties.h> 8 #include <sys/system_properties.h>
9 9
10 #include "android_webview/common/renderer_picture_map.h" 10 #include "android_webview/common/renderer_picture_map.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 return false; 97 return false;
98 } 98 }
99 99
100 return succeeded; 100 return succeeded;
101 } 101 }
102 102
103 } // namespace 103 } // namespace
104 104
105 namespace android_webview { 105 namespace android_webview {
106 106
107 namespace {
108
109 const void* kBrowserViewRendererUserDataKey = &kBrowserViewRendererUserDataKey;
110
111 class BrowserViewRendererUserData : public base::SupportsUserData::Data {
joth 2013/03/11 16:36:12 ah no - afraid we duplicated work here..! Mine's a
112 public:
113 BrowserViewRendererUserData(BrowserViewRenderer* ptr) : bvr_(ptr) {}
114
115 static BrowserViewRenderer* GetBrowserViewRenderer(
116 content::WebContents* web_contents) {
117 if (!web_contents)
118 return NULL;
119 BrowserViewRendererUserData* data =
120 reinterpret_cast<BrowserViewRendererUserData*>(
121 web_contents->GetUserData(kBrowserViewRendererUserDataKey));
122 return data ? data->bvr_ : NULL;
123 }
124
125 private:
126 BrowserViewRenderer* bvr_;
127 };
128
129 } // namespace
130
131 // static
132 BrowserViewRenderer* BrowserViewRenderer::FromWebContents(
133 content::WebContents* web_contents) {
134 return BrowserViewRendererUserData::GetBrowserViewRenderer(web_contents);
135 }
136
107 // static 137 // static
108 BrowserViewRendererImpl* BrowserViewRendererImpl::Create( 138 BrowserViewRendererImpl* BrowserViewRendererImpl::Create(
109 BrowserViewRenderer::Client* client, 139 BrowserViewRenderer::Client* client,
110 JavaHelper* java_helper) { 140 JavaHelper* java_helper) {
111 return new BrowserViewRendererImpl(client, java_helper); 141 return new BrowserViewRendererImpl(client, java_helper);
112 } 142 }
113 143
114 BrowserViewRendererImpl::BrowserViewRendererImpl( 144 BrowserViewRendererImpl::BrowserViewRendererImpl(
115 BrowserViewRenderer::Client* client, 145 BrowserViewRenderer::Client* client,
116 JavaHelper* java_helper) 146 JavaHelper* java_helper)
117 : client_(client), 147 : client_(client),
118 java_helper_(java_helper), 148 java_helper_(java_helper),
119 view_renderer_host_(new ViewRendererHost(NULL, this)), 149 view_renderer_host_(new ViewRendererHost(NULL, this)),
120 ALLOW_THIS_IN_INITIALIZER_LIST(compositor_(Compositor::Create(this))), 150 ALLOW_THIS_IN_INITIALIZER_LIST(compositor_(Compositor::Create(this))),
121 view_clip_layer_(cc::Layer::create()), 151 view_clip_layer_(cc::Layer::create()),
122 transform_layer_(cc::Layer::create()), 152 transform_layer_(cc::Layer::create()),
123 scissor_clip_layer_(cc::Layer::create()), 153 scissor_clip_layer_(cc::Layer::create()),
154 view_attached_(false),
124 view_visible_(false), 155 view_visible_(false),
125 compositor_visible_(false), 156 compositor_visible_(false),
126 is_composite_pending_(false), 157 is_composite_pending_(false),
127 dpi_scale_(1.0f), 158 dpi_scale_(1.0f),
128 page_scale_(1.0f), 159 page_scale_(1.0f),
129 on_new_picture_mode_(kOnNewPictureDisabled), 160 on_new_picture_mode_(kOnNewPictureDisabled),
130 last_frame_context_(NULL), 161 last_frame_context_(NULL),
131 web_contents_(NULL), 162 web_contents_(NULL),
132 update_frame_info_callback_( 163 update_frame_info_callback_(
133 base::Bind(&BrowserViewRendererImpl::OnFrameInfoUpdated, 164 base::Bind(&BrowserViewRendererImpl::OnFrameInfoUpdated,
(...skipping 24 matching lines...) Expand all
158 } 189 }
159 190
160 void BrowserViewRendererImpl::SetContents(ContentViewCore* content_view_core) { 191 void BrowserViewRendererImpl::SetContents(ContentViewCore* content_view_core) {
161 if (web_contents_) { 192 if (web_contents_) {
162 ContentViewCore* previous_content_view_core = 193 ContentViewCore* previous_content_view_core =
163 ContentViewCore::FromWebContents(web_contents_); 194 ContentViewCore::FromWebContents(web_contents_);
164 if (previous_content_view_core) { 195 if (previous_content_view_core) {
165 previous_content_view_core->RemoveFrameInfoCallback( 196 previous_content_view_core->RemoveFrameInfoCallback(
166 update_frame_info_callback_); 197 update_frame_info_callback_);
167 } 198 }
199 web_contents_->RemoveUserData(kBrowserViewRendererUserDataKey);
168 } 200 }
169 201
170 web_contents_ = content_view_core ? 202 web_contents_ = content_view_core ?
171 content_view_core->GetWebContents() : NULL; 203 content_view_core->GetWebContents() : NULL;
172 view_renderer_host_->Observe(web_contents_); 204 view_renderer_host_->Observe(web_contents_);
173 205
174 if (!content_view_core) 206 if (!content_view_core)
175 return; 207 return;
176 208
209 web_contents_->SetUserData(kBrowserViewRendererUserDataKey,
210 new BrowserViewRendererUserData(this));
211
177 content_view_core->AddFrameInfoCallback(update_frame_info_callback_); 212 content_view_core->AddFrameInfoCallback(update_frame_info_callback_);
178 dpi_scale_ = content_view_core->GetDpiScale(); 213 dpi_scale_ = content_view_core->GetDpiScale();
179 214
180 view_clip_layer_->removeAllChildren(); 215 view_clip_layer_->removeAllChildren();
181 view_clip_layer_->addChild(content_view_core->GetLayer()); 216 view_clip_layer_->addChild(content_view_core->GetLayer());
182 Invalidate(); 217 Invalidate();
183 } 218 }
184 219
185 void BrowserViewRendererImpl::DrawGL(AwDrawGLInfo* draw_info) { 220 void BrowserViewRendererImpl::DrawGL(AwDrawGLInfo* draw_info) {
186 TRACE_EVENT0("android_webview", "BrowserViewRendererImpl::DrawGL"); 221 TRACE_EVENT0("android_webview", "BrowserViewRendererImpl::DrawGL");
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 view_visible_ = window_visible && view_visible; 552 view_visible_ = window_visible && view_visible;
518 Invalidate(); 553 Invalidate();
519 } 554 }
520 555
521 void BrowserViewRendererImpl::OnSizeChanged(int width, int height) { 556 void BrowserViewRendererImpl::OnSizeChanged(int width, int height) {
522 view_size_ = gfx::Size(width, height); 557 view_size_ = gfx::Size(width, height);
523 view_clip_layer_->setBounds(view_size_); 558 view_clip_layer_->setBounds(view_size_);
524 } 559 }
525 560
526 void BrowserViewRendererImpl::OnAttachedToWindow(int width, int height) { 561 void BrowserViewRendererImpl::OnAttachedToWindow(int width, int height) {
562 view_attached_ = true;
527 view_size_ = gfx::Size(width, height); 563 view_size_ = gfx::Size(width, height);
528 view_clip_layer_->setBounds(view_size_); 564 view_clip_layer_->setBounds(view_size_);
529 } 565 }
530 566
531 void BrowserViewRendererImpl::OnDetachedFromWindow() { 567 void BrowserViewRendererImpl::OnDetachedFromWindow() {
568 view_attached_ = false;
532 view_visible_ = false; 569 view_visible_ = false;
533 SetCompositorVisibility(false); 570 SetCompositorVisibility(false);
534 } 571 }
535 572
573 bool BrowserViewRendererImpl::IsAttachedToWindow() {
574 return view_attached_;
575 }
576
577 bool BrowserViewRendererImpl::IsViewVisible() {
578 return view_visible_;
579 }
580
581 gfx::Rect BrowserViewRendererImpl::GetScreenRect() {
582 return gfx::Rect(client_->GetLocationOnScreen(), view_size_);
583 }
584
536 void BrowserViewRendererImpl::ScheduleComposite() { 585 void BrowserViewRendererImpl::ScheduleComposite() {
537 TRACE_EVENT0("android_webview", "BrowserViewRendererImpl::ScheduleComposite"); 586 TRACE_EVENT0("android_webview", "BrowserViewRendererImpl::ScheduleComposite");
538 587
539 if (is_composite_pending_) 588 if (is_composite_pending_)
540 return; 589 return;
541 590
542 is_composite_pending_ = true; 591 is_composite_pending_ = true;
543 Invalidate(); 592 Invalidate();
544 } 593 }
545 594
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 676
628 void BrowserViewRendererImpl::OnFrameInfoUpdated( 677 void BrowserViewRendererImpl::OnFrameInfoUpdated(
629 const gfx::SizeF& content_size, 678 const gfx::SizeF& content_size,
630 const gfx::Vector2dF& scroll_offset, 679 const gfx::Vector2dF& scroll_offset,
631 float page_scale_factor) { 680 float page_scale_factor) {
632 page_scale_ = page_scale_factor; 681 page_scale_ = page_scale_factor;
633 content_size_css_ = content_size; 682 content_size_css_ = content_size;
634 } 683 }
635 684
636 } // namespace android_webview 685 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698