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

Side by Side Diff: android_webview/renderer/aw_render_view_ext.cc

Issue 1368193002: Update page scale factor when layout updates (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: de-dup Created 5 years, 2 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
« no previous file with comments | « android_webview/renderer/aw_render_view_ext.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/aw_render_view_ext.h" 5 #include "android_webview/renderer/aw_render_view_ext.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "android_webview/common/aw_hit_test_data.h" 9 #include "android_webview/common/aw_hit_test_data.h"
10 #include "android_webview/common/render_view_messages.h" 10 #include "android_webview/common/render_view_messages.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 blink::WebDocument document = webview->mainFrame()->document(); 181 blink::WebDocument document = webview->mainFrame()->document();
182 const blink::WebElement child_img = GetImgChild(document); 182 const blink::WebElement child_img = GetImgChild(document);
183 hasImages = !child_img.isNull(); 183 hasImages = !child_img.isNull();
184 } 184 }
185 } 185 }
186 Send(new AwViewHostMsg_DocumentHasImagesResponse(routing_id(), id, 186 Send(new AwViewHostMsg_DocumentHasImagesResponse(routing_id(), id,
187 hasImages)); 187 hasImages));
188 } 188 }
189 189
190 void AwRenderViewExt::DidCommitCompositorFrame() { 190 void AwRenderViewExt::DidCommitCompositorFrame() {
191 UpdatePageScaleFactor(); 191 PostCheckContentsSizeAndScale();
192 } 192 }
193 193
194 void AwRenderViewExt::DidUpdateLayout() { 194 void AwRenderViewExt::DidUpdateLayout() {
195 PostCheckContentsSizeAndScale();
196 }
197
198 void AwRenderViewExt::PostCheckContentsSizeAndScale() {
195 if (check_contents_size_timer_.IsRunning()) 199 if (check_contents_size_timer_.IsRunning())
196 return; 200 return;
197 201
198 check_contents_size_timer_.Start(FROM_HERE, 202 check_contents_size_timer_.Start(FROM_HERE,
199 base::TimeDelta::FromMilliseconds(0), this, 203 base::TimeDelta::FromMilliseconds(0), this,
200 &AwRenderViewExt::CheckContentsSize); 204 &AwRenderViewExt::CheckContentsSizeAndScale);
201 } 205 }
202 206
203 void AwRenderViewExt::UpdatePageScaleFactor() { 207 void AwRenderViewExt::CheckContentsSizeAndScale() {
204 if (page_scale_factor_ != render_view()->GetWebView()->pageScaleFactor()) { 208 blink::WebView* webview = render_view()->GetWebView();
205 page_scale_factor_ = render_view()->GetWebView()->pageScaleFactor(); 209 if (!webview)
210 return;
211
212 if (page_scale_factor_ != webview->pageScaleFactor()) {
213 page_scale_factor_ = webview->pageScaleFactor();
206 Send(new AwViewHostMsg_PageScaleFactorChanged(routing_id(), 214 Send(new AwViewHostMsg_PageScaleFactorChanged(routing_id(),
207 page_scale_factor_)); 215 page_scale_factor_));
208 } 216 }
209 }
210
211 void AwRenderViewExt::CheckContentsSize() {
212 if (!render_view()->GetWebView())
213 return;
214 217
215 gfx::Size contents_size; 218 gfx::Size contents_size;
216 219
217 blink::WebFrame* main_frame = render_view()->GetWebView()->mainFrame(); 220 blink::WebFrame* main_frame = webview->mainFrame();
218 if (main_frame) 221 if (main_frame)
219 contents_size = main_frame->contentsSize(); 222 contents_size = main_frame->contentsSize();
220 223
221 // Fall back to contentsPreferredMinimumSize if the mainFrame is reporting a 224 // Fall back to contentsPreferredMinimumSize if the mainFrame is reporting a
222 // 0x0 size (this happens during initial load). 225 // 0x0 size (this happens during initial load).
223 if (contents_size.IsEmpty()) { 226 if (contents_size.IsEmpty()) {
224 contents_size = render_view()->GetWebView()->contentsPreferredMinimumSize(); 227 contents_size = webview->contentsPreferredMinimumSize();
225 } 228 }
226 229
227 if (contents_size == last_sent_contents_size_) 230 if (contents_size == last_sent_contents_size_)
228 return; 231 return;
229 232
230 last_sent_contents_size_ = contents_size; 233 last_sent_contents_size_ = contents_size;
231 Send(new AwViewHostMsg_OnContentsSizeChanged(routing_id(), contents_size)); 234 Send(new AwViewHostMsg_OnContentsSizeChanged(routing_id(), contents_size));
232 } 235 }
233 236
234 void AwRenderViewExt::Navigate(const GURL& url) { 237 void AwRenderViewExt::Navigate(const GURL& url) {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 void AwRenderViewExt::OnSmoothScroll(int target_x, 326 void AwRenderViewExt::OnSmoothScroll(int target_x,
324 int target_y, 327 int target_y,
325 long duration_ms) { 328 long duration_ms) {
326 if (!render_view() || !render_view()->GetWebView()) 329 if (!render_view() || !render_view()->GetWebView())
327 return; 330 return;
328 331
329 render_view()->GetWebView()->smoothScroll(target_x, target_y, duration_ms); 332 render_view()->GetWebView()->smoothScroll(target_x, target_y, duration_ms);
330 } 333 }
331 334
332 } // namespace android_webview 335 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/renderer/aw_render_view_ext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698