OLD | NEW |
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 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 result.setFilesystemId(drop_data.filesystem_id); | 635 result.setFilesystemId(drop_data.filesystem_id); |
636 return result; | 636 return result; |
637 } | 637 } |
638 | 638 |
639 } // namespace | 639 } // namespace |
640 | 640 |
641 RenderViewImpl::RenderViewImpl(RenderViewImplParams* params) | 641 RenderViewImpl::RenderViewImpl(RenderViewImplParams* params) |
642 : RenderWidget(blink::WebPopupTypeNone, | 642 : RenderWidget(blink::WebPopupTypeNone, |
643 params->screen_info, | 643 params->screen_info, |
644 params->swapped_out, | 644 params->swapped_out, |
645 params->hidden), | 645 params->hidden, |
| 646 params->background), |
646 webkit_preferences_(params->webkit_prefs), | 647 webkit_preferences_(params->webkit_prefs), |
647 send_content_state_immediately_(false), | 648 send_content_state_immediately_(false), |
648 enabled_bindings_(0), | 649 enabled_bindings_(0), |
649 send_preferred_size_changes_(false), | 650 send_preferred_size_changes_(false), |
650 navigation_gesture_(NavigationGestureUnknown), | 651 navigation_gesture_(NavigationGestureUnknown), |
651 opened_by_user_gesture_(true), | 652 opened_by_user_gesture_(true), |
652 opener_suppressed_(false), | 653 opener_suppressed_(false), |
653 suppress_dialogs_until_swap_out_(false), | 654 suppress_dialogs_until_swap_out_(false), |
654 page_id_(-1), | 655 page_id_(-1), |
655 last_page_id_sent_to_browser_(-1), | 656 last_page_id_sent_to_browser_(-1), |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 const RendererPreferences& renderer_prefs, | 920 const RendererPreferences& renderer_prefs, |
920 const WebPreferences& webkit_prefs, | 921 const WebPreferences& webkit_prefs, |
921 int32 routing_id, | 922 int32 routing_id, |
922 int32 main_frame_routing_id, | 923 int32 main_frame_routing_id, |
923 int32 surface_id, | 924 int32 surface_id, |
924 int64 session_storage_namespace_id, | 925 int64 session_storage_namespace_id, |
925 const base::string16& frame_name, | 926 const base::string16& frame_name, |
926 bool is_renderer_created, | 927 bool is_renderer_created, |
927 bool swapped_out, | 928 bool swapped_out, |
928 bool hidden, | 929 bool hidden, |
| 930 bool background, |
929 int32 next_page_id, | 931 int32 next_page_id, |
930 const blink::WebScreenInfo& screen_info, | 932 const blink::WebScreenInfo& screen_info, |
931 AccessibilityMode accessibility_mode) { | 933 AccessibilityMode accessibility_mode) { |
932 DCHECK(routing_id != MSG_ROUTING_NONE); | 934 DCHECK(routing_id != MSG_ROUTING_NONE); |
933 RenderViewImplParams params(opener_id, | 935 RenderViewImplParams params(opener_id, |
934 renderer_prefs, | 936 renderer_prefs, |
935 webkit_prefs, | 937 webkit_prefs, |
936 routing_id, | 938 routing_id, |
937 main_frame_routing_id, | 939 main_frame_routing_id, |
938 surface_id, | 940 surface_id, |
939 session_storage_namespace_id, | 941 session_storage_namespace_id, |
940 frame_name, | 942 frame_name, |
941 is_renderer_created, | 943 is_renderer_created, |
942 swapped_out, | 944 swapped_out, |
943 hidden, | 945 hidden, |
| 946 background, |
944 next_page_id, | 947 next_page_id, |
945 screen_info, | 948 screen_info, |
946 accessibility_mode); | 949 accessibility_mode); |
947 RenderViewImpl* render_view = NULL; | 950 RenderViewImpl* render_view = NULL; |
948 if (g_create_render_view_impl) | 951 if (g_create_render_view_impl) |
949 render_view = g_create_render_view_impl(¶ms); | 952 render_view = g_create_render_view_impl(¶ms); |
950 else | 953 else |
951 render_view = new RenderViewImpl(¶ms); | 954 render_view = new RenderViewImpl(¶ms); |
952 render_view->Initialize(¶ms); | 955 render_view->Initialize(¶ms); |
953 return render_view; | 956 return render_view; |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1512 new ViewHostMsg_CreateWindow(params, | 1515 new ViewHostMsg_CreateWindow(params, |
1513 &routing_id, | 1516 &routing_id, |
1514 &main_frame_routing_id, | 1517 &main_frame_routing_id, |
1515 &surface_id, | 1518 &surface_id, |
1516 &cloned_session_storage_namespace_id)); | 1519 &cloned_session_storage_namespace_id)); |
1517 if (routing_id == MSG_ROUTING_NONE) | 1520 if (routing_id == MSG_ROUTING_NONE) |
1518 return NULL; | 1521 return NULL; |
1519 | 1522 |
1520 WebUserGestureIndicator::consumeUserGesture(); | 1523 WebUserGestureIndicator::consumeUserGesture(); |
1521 | 1524 |
1522 WebPreferences transferred_preferences = webkit_preferences_; | 1525 // While this view may be a background extension page, it can spawn a visible |
1523 | 1526 // render view. So we just assume that the new one is not another background |
1524 // Unless accelerated compositing has been explicitly disabled from the | 1527 // page instead of passing on our own value. |
1525 // command line (e.g. via the blacklist or about:flags) re-enable it for | 1528 // TODO(vangelis): Can we call if the new view will be a background page? |
1526 // new views that get spawned by this view. This gets around the issue that | 1529 bool is_background = false; |
1527 // background extension pages disable accelerated compositing via web prefs | |
1528 // but can themselves spawn a visible render view which should be allowed | |
1529 // use gpu acceleration. | |
1530 if (!webkit_preferences_.accelerated_compositing_enabled) { | |
1531 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | |
1532 if (!command_line.HasSwitch(switches::kDisableAcceleratedCompositing)) | |
1533 transferred_preferences.accelerated_compositing_enabled = true; | |
1534 } | |
1535 | 1530 |
1536 // The initial hidden state for the RenderViewImpl here has to match what the | 1531 // The initial hidden state for the RenderViewImpl here has to match what the |
1537 // browser will eventually decide for the given disposition. Since we have to | 1532 // browser will eventually decide for the given disposition. Since we have to |
1538 // return from this call synchronously, we just have to make our best guess | 1533 // return from this call synchronously, we just have to make our best guess |
1539 // and rely on the browser sending a WasHidden / WasShown message if it | 1534 // and rely on the browser sending a WasHidden / WasShown message if it |
1540 // disagrees. | 1535 // disagrees. |
1541 RenderViewImpl* view = RenderViewImpl::Create( | 1536 RenderViewImpl* view = RenderViewImpl::Create( |
1542 routing_id_, | 1537 routing_id_, |
1543 renderer_preferences_, | 1538 renderer_preferences_, |
1544 transferred_preferences, | 1539 webkit_preferences_, |
1545 routing_id, | 1540 routing_id, |
1546 main_frame_routing_id, | 1541 main_frame_routing_id, |
1547 surface_id, | 1542 surface_id, |
1548 cloned_session_storage_namespace_id, | 1543 cloned_session_storage_namespace_id, |
1549 base::string16(), // WebCore will take care of setting the correct name. | 1544 base::string16(), // WebCore will take care of setting the correct name. |
1550 true, // is_renderer_created | 1545 true, // is_renderer_created |
1551 false, // swapped_out | 1546 false, // swapped_out |
| 1547 is_background, |
1552 params.disposition == NEW_BACKGROUND_TAB, // hidden | 1548 params.disposition == NEW_BACKGROUND_TAB, // hidden |
1553 1, // next_page_id | 1549 1, // next_page_id |
1554 screen_info_, | 1550 screen_info_, |
1555 accessibility_mode_); | 1551 accessibility_mode_); |
1556 view->opened_by_user_gesture_ = params.user_gesture; | 1552 view->opened_by_user_gesture_ = params.user_gesture; |
1557 | 1553 |
1558 // Record whether the creator frame is trying to suppress the opener field. | 1554 // Record whether the creator frame is trying to suppress the opener field. |
1559 view->opener_suppressed_ = params.opener_suppressed; | 1555 view->opener_suppressed_ = params.opener_suppressed; |
1560 | 1556 |
1561 return view->webview(); | 1557 return view->webview(); |
(...skipping 3196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4758 std::vector<gfx::Size> sizes(icon_urls[i].sizes().size()); | 4754 std::vector<gfx::Size> sizes(icon_urls[i].sizes().size()); |
4759 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); | 4755 ConvertToFaviconSizes(icon_urls[i].sizes(), &sizes); |
4760 if (!url.isEmpty()) | 4756 if (!url.isEmpty()) |
4761 urls.push_back( | 4757 urls.push_back( |
4762 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); | 4758 FaviconURL(url, ToFaviconType(icon_urls[i].iconType()), sizes)); |
4763 } | 4759 } |
4764 SendUpdateFaviconURL(urls); | 4760 SendUpdateFaviconURL(urls); |
4765 } | 4761 } |
4766 | 4762 |
4767 } // namespace content | 4763 } // namespace content |
OLD | NEW |