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

Side by Side Diff: content/renderer/render_view_impl.cc

Issue 2918903002: Move IconURLs method from WebFrame to WebLocalFrame (Closed)
Patch Set: Fixing compile problems in chrome/browser/extensions/favicon_downloader_unittest.cc Created 3 years, 6 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
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 "content/renderer/render_view_impl.h" 5 #include "content/renderer/render_view_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #include "content/common/input_messages.h" 53 #include "content/common/input_messages.h"
54 #include "content/common/page_messages.h" 54 #include "content/common/page_messages.h"
55 #include "content/common/render_message_filter.mojom.h" 55 #include "content/common/render_message_filter.mojom.h"
56 #include "content/common/view_messages.h" 56 #include "content/common/view_messages.h"
57 #include "content/public/common/associated_interface_provider.h" 57 #include "content/public/common/associated_interface_provider.h"
58 #include "content/public/common/bindings_policy.h" 58 #include "content/public/common/bindings_policy.h"
59 #include "content/public/common/browser_side_navigation_policy.h" 59 #include "content/public/common/browser_side_navigation_policy.h"
60 #include "content/public/common/content_client.h" 60 #include "content/public/common/content_client.h"
61 #include "content/public/common/content_constants.h" 61 #include "content/public/common/content_constants.h"
62 #include "content/public/common/content_switches.h" 62 #include "content/public/common/content_switches.h"
63 #include "content/public/common/favicon_url.h"
64 #include "content/public/common/page_importance_signals.h" 63 #include "content/public/common/page_importance_signals.h"
65 #include "content/public/common/page_state.h" 64 #include "content/public/common/page_state.h"
66 #include "content/public/common/page_zoom.h" 65 #include "content/public/common/page_zoom.h"
67 #include "content/public/common/three_d_api_types.h" 66 #include "content/public/common/three_d_api_types.h"
68 #include "content/public/common/url_constants.h" 67 #include "content/public/common/url_constants.h"
69 #include "content/public/common/web_preferences.h" 68 #include "content/public/common/web_preferences.h"
70 #include "content/public/renderer/content_renderer_client.h" 69 #include "content/public/renderer/content_renderer_client.h"
71 #include "content/public/renderer/document_state.h" 70 #include "content/public/renderer/document_state.h"
72 #include "content/public/renderer/navigation_state.h" 71 #include "content/public/renderer/navigation_state.h"
73 #include "content/public/renderer/render_view_observer.h" 72 #include "content/public/renderer/render_view_observer.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 using blink::WebElement; 211 using blink::WebElement;
213 using blink::WebFileChooserCompletion; 212 using blink::WebFileChooserCompletion;
214 using blink::WebFormControlElement; 213 using blink::WebFormControlElement;
215 using blink::WebFormElement; 214 using blink::WebFormElement;
216 using blink::WebFrame; 215 using blink::WebFrame;
217 using blink::WebFrameContentDumper; 216 using blink::WebFrameContentDumper;
218 using blink::WebGestureEvent; 217 using blink::WebGestureEvent;
219 using blink::WebHistoryItem; 218 using blink::WebHistoryItem;
220 using blink::WebHTTPBody; 219 using blink::WebHTTPBody;
221 using blink::WebHitTestResult; 220 using blink::WebHitTestResult;
222 using blink::WebIconURL;
223 using blink::WebImage; 221 using blink::WebImage;
224 using blink::WebInputElement; 222 using blink::WebInputElement;
225 using blink::WebInputEvent; 223 using blink::WebInputEvent;
226 using blink::WebLocalFrame; 224 using blink::WebLocalFrame;
227 using blink::WebMediaPlayerAction; 225 using blink::WebMediaPlayerAction;
228 using blink::WebMouseEvent; 226 using blink::WebMouseEvent;
229 using blink::WebNavigationPolicy; 227 using blink::WebNavigationPolicy;
230 using blink::WebNavigationType; 228 using blink::WebNavigationType;
231 using blink::WebNode; 229 using blink::WebNode;
232 using blink::WebPluginAction; 230 using blink::WebPluginAction;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 *base::CommandLine::ForCurrentProcess(); 337 *base::CommandLine::ForCurrentProcess();
340 if (command_line.HasSwitch(switches::kDisablePreferCompositingToLCDText)) 338 if (command_line.HasSwitch(switches::kDisablePreferCompositingToLCDText))
341 return false; 339 return false;
342 if (command_line.HasSwitch(switches::kEnablePreferCompositingToLCDText)) 340 if (command_line.HasSwitch(switches::kEnablePreferCompositingToLCDText))
343 return true; 341 return true;
344 if (!compositor_deps->IsLcdTextEnabled()) 342 if (!compositor_deps->IsLcdTextEnabled())
345 return true; 343 return true;
346 return DeviceScaleEnsuresTextQuality(device_scale_factor); 344 return DeviceScaleEnsuresTextQuality(device_scale_factor);
347 } 345 }
348 346
349 static FaviconURL::IconType ToFaviconType(blink::WebIconURL::Type type) {
350 switch (type) {
351 case blink::WebIconURL::kTypeFavicon:
352 return FaviconURL::FAVICON;
353 case blink::WebIconURL::kTypeTouch:
354 return FaviconURL::TOUCH_ICON;
355 case blink::WebIconURL::kTypeTouchPrecomposed:
356 return FaviconURL::TOUCH_PRECOMPOSED_ICON;
357 case blink::WebIconURL::kTypeInvalid:
358 return FaviconURL::INVALID_ICON;
359 }
360 return FaviconURL::INVALID_ICON;
361 }
362
363 static void ConvertToFaviconSizes(
364 const blink::WebVector<blink::WebSize>& web_sizes,
365 std::vector<gfx::Size>* sizes) {
366 DCHECK(sizes->empty());
367 sizes->reserve(web_sizes.size());
368 for (size_t i = 0; i < web_sizes.size(); ++i)
369 sizes->push_back(gfx::Size(web_sizes[i]));
370 }
371
372 /////////////////////////////////////////////////////////////////////////////// 347 ///////////////////////////////////////////////////////////////////////////////
373 348
374 namespace { 349 namespace {
375 350
376 typedef void (*SetFontFamilyWrapper)(blink::WebSettings*, 351 typedef void (*SetFontFamilyWrapper)(blink::WebSettings*,
377 const base::string16&, 352 const base::string16&,
378 UScriptCode); 353 UScriptCode);
379 354
380 void SetStandardFontFamilyWrapper(WebSettings* settings, 355 void SetStandardFontFamilyWrapper(WebSettings* settings,
381 const base::string16& font, 356 const base::string16& font,
(...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1556 frames_in_progress_++; 1531 frames_in_progress_++;
1557 } 1532 }
1558 1533
1559 void RenderViewImpl::FrameDidStopLoading(WebFrame* frame) { 1534 void RenderViewImpl::FrameDidStopLoading(WebFrame* frame) {
1560 // TODO(japhet): This should be a DCHECK, but the pdf plugin sometimes 1535 // TODO(japhet): This should be a DCHECK, but the pdf plugin sometimes
1561 // calls DidStopLoading() without a matching DidStartLoading(). 1536 // calls DidStopLoading() without a matching DidStartLoading().
1562 if (frames_in_progress_ == 0) 1537 if (frames_in_progress_ == 0)
1563 return; 1538 return;
1564 frames_in_progress_--; 1539 frames_in_progress_--;
1565 if (frames_in_progress_ == 0) { 1540 if (frames_in_progress_ == 0) {
1566 DidStopLoadingIcons();
1567 for (auto& observer : observers_) 1541 for (auto& observer : observers_)
1568 observer.DidStopLoading(); 1542 observer.DidStopLoading();
1569 } 1543 }
1570 } 1544 }
1571 1545
1572 void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) { 1546 void RenderViewImpl::AttachWebFrameWidget(blink::WebFrameWidget* frame_widget) {
1573 // The previous WebFrameWidget must already be detached by CloseForFrame(). 1547 // The previous WebFrameWidget must already be detached by CloseForFrame().
1574 DCHECK(!frame_widget_); 1548 DCHECK(!frame_widget_);
1575 frame_widget_ = frame_widget; 1549 frame_widget_ = frame_widget;
1576 } 1550 }
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
1915 const blink::WebElement& element) { 1889 const blink::WebElement& element) {
1916 blink::WebRect bounding_box_in_window = element.BoundsInViewport(); 1890 blink::WebRect bounding_box_in_window = element.BoundsInViewport();
1917 ConvertViewportToWindowViaWidget(&bounding_box_in_window); 1891 ConvertViewportToWindowViaWidget(&bounding_box_in_window);
1918 return gfx::RectF(bounding_box_in_window); 1892 return gfx::RectF(bounding_box_in_window);
1919 } 1893 }
1920 1894
1921 bool RenderViewImpl::HasAddedInputHandler() const { 1895 bool RenderViewImpl::HasAddedInputHandler() const {
1922 return has_added_input_handler_; 1896 return has_added_input_handler_;
1923 } 1897 }
1924 1898
1925 void RenderViewImpl::didChangeIcon(WebLocalFrame* frame,
1926 WebIconURL::Type icon_type) {
1927 if (frame->Parent())
1928 return;
1929
1930 WebVector<WebIconURL> icon_urls = frame->IconURLs(icon_type);
1931 std::vector<FaviconURL> urls;
1932 for (size_t i = 0; i < icon_urls.size(); i++) {
1933 std::vector<gfx::Size> sizes;
1934 ConvertToFaviconSizes(icon_urls[i].Sizes(), &sizes);
1935 urls.push_back(FaviconURL(icon_urls[i].GetIconURL(),
1936 ToFaviconType(icon_urls[i].IconType()), sizes));
1937 }
1938 SendUpdateFaviconURL(urls);
1939 }
1940
1941 void RenderViewImpl::CheckPreferredSize() { 1899 void RenderViewImpl::CheckPreferredSize() {
1942 // We don't always want to send the change messages over IPC, only if we've 1900 // We don't always want to send the change messages over IPC, only if we've
1943 // been put in that mode by getting a |ViewMsg_EnablePreferredSizeChangedMode| 1901 // been put in that mode by getting a |ViewMsg_EnablePreferredSizeChangedMode|
1944 // message. 1902 // message.
1945 if (!send_preferred_size_changes_ || !webview()) 1903 if (!send_preferred_size_changes_ || !webview())
1946 return; 1904 return;
1947 1905
1948 gfx::Size size = webview()->ContentsPreferredMinimumSize(); 1906 gfx::Size size = webview()->ContentsPreferredMinimumSize();
1949 if (size == preferred_size_) 1907 if (size == preferred_size_)
1950 return; 1908 return;
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
2591 webview()->ResolveTapDisambiguation(timestamp_seconds, tap_viewport_offset, 2549 webview()->ResolveTapDisambiguation(timestamp_seconds, tap_viewport_offset,
2592 is_long_press); 2550 is_long_press);
2593 } 2551 }
2594 2552
2595 void RenderViewImpl::DidCommitCompositorFrame() { 2553 void RenderViewImpl::DidCommitCompositorFrame() {
2596 RenderWidget::DidCommitCompositorFrame(); 2554 RenderWidget::DidCommitCompositorFrame();
2597 for (auto& observer : observers_) 2555 for (auto& observer : observers_)
2598 observer.DidCommitCompositorFrame(); 2556 observer.DidCommitCompositorFrame();
2599 } 2557 }
2600 2558
2601 void RenderViewImpl::SendUpdateFaviconURL(const std::vector<FaviconURL>& urls) {
2602 if (!urls.empty())
2603 Send(new ViewHostMsg_UpdateFaviconURL(GetRoutingID(), urls));
2604 }
2605
2606 void RenderViewImpl::DidStopLoadingIcons() {
2607 int icon_types = WebIconURL::kTypeFavicon |
2608 WebIconURL::kTypeTouchPrecomposed | WebIconURL::kTypeTouch;
2609
2610 // Favicons matter only for the top-level frame. If it is a WebRemoteFrame,
2611 // just return early.
2612 if (webview()->MainFrame()->IsWebRemoteFrame())
2613 return;
2614
2615 WebVector<WebIconURL> icon_urls =
2616 webview()->MainFrame()->IconURLs(icon_types);
2617
2618 std::vector<FaviconURL> urls;
2619 for (size_t i = 0; i < icon_urls.size(); i++) {
2620 WebURL url = icon_urls[i].GetIconURL();
2621 std::vector<gfx::Size> sizes;
2622 ConvertToFaviconSizes(icon_urls[i].Sizes(), &sizes);
2623 if (!url.IsEmpty())
2624 urls.push_back(
2625 FaviconURL(url, ToFaviconType(icon_urls[i].IconType()), sizes));
2626 }
2627 SendUpdateFaviconURL(urls);
2628 }
2629
2630 void RenderViewImpl::UpdateWebViewWithDeviceScaleFactor() { 2559 void RenderViewImpl::UpdateWebViewWithDeviceScaleFactor() {
2631 if (!webview()) 2560 if (!webview())
2632 return; 2561 return;
2633 if (IsUseZoomForDSFEnabled()) { 2562 if (IsUseZoomForDSFEnabled()) {
2634 webview()->SetZoomFactorForDeviceScaleFactor(device_scale_factor_); 2563 webview()->SetZoomFactorForDeviceScaleFactor(device_scale_factor_);
2635 } else { 2564 } else {
2636 webview()->SetDeviceScaleFactor(device_scale_factor_); 2565 webview()->SetDeviceScaleFactor(device_scale_factor_);
2637 } 2566 }
2638 webview()->GetSettings()->SetPreferCompositingToLCDTextEnabled( 2567 webview()->GetSettings()->SetPreferCompositingToLCDTextEnabled(
2639 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_)); 2568 PreferCompositingToLCDText(compositor_deps_, device_scale_factor_));
(...skipping 23 matching lines...) Expand all
2663 input_event.GetCoalescedEventsPointers(), latency_info, 2592 input_event.GetCoalescedEventsPointers(), latency_info,
2664 dispatch_type); 2593 dispatch_type);
2665 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 2594 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
2666 } 2595 }
2667 idle_user_detector_->ActivityDetected(); 2596 idle_user_detector_->ActivityDetected();
2668 return RenderWidget::HandleInputEvent(input_event, latency_info, 2597 return RenderWidget::HandleInputEvent(input_event, latency_info,
2669 dispatch_type); 2598 dispatch_type);
2670 } 2599 }
2671 2600
2672 } // namespace content 2601 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698