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

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

Issue 2535483002: Plumb site engagement to the renderer process. (Closed)
Patch Set: Address comments Created 4 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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 "content/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 1106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 is_using_lofi_(false), 1117 is_using_lofi_(false),
1118 effective_connection_type_( 1118 effective_connection_type_(
1119 blink::WebEffectiveConnectionType::TypeUnknown), 1119 blink::WebEffectiveConnectionType::TypeUnknown),
1120 is_pasting_(false), 1120 is_pasting_(false),
1121 suppress_further_dialogs_(false), 1121 suppress_further_dialogs_(false),
1122 blame_context_(nullptr), 1122 blame_context_(nullptr),
1123 #if BUILDFLAG(ENABLE_PLUGINS) 1123 #if BUILDFLAG(ENABLE_PLUGINS)
1124 focused_pepper_plugin_(nullptr), 1124 focused_pepper_plugin_(nullptr),
1125 pepper_last_mouse_event_target_(nullptr), 1125 pepper_last_mouse_event_target_(nullptr),
1126 #endif 1126 #endif
1127 engagement_binding_(this),
1127 frame_binding_(this), 1128 frame_binding_(this),
1128 host_zoom_binding_(this), 1129 host_zoom_binding_(this),
1129 has_accessed_initial_document_(false), 1130 has_accessed_initial_document_(false),
1130 weak_factory_(this) { 1131 weak_factory_(this) {
1131 // We don't have a service_manager::Connection at this point, so use empty 1132 // We don't have a service_manager::Connection at this point, so use empty
1132 // identity/specs. 1133 // identity/specs.
1133 // TODO(beng): We should fix this, so we can apply policy about which 1134 // TODO(beng): We should fix this, so we can apply policy about which
1134 // interfaces get exposed. 1135 // interfaces get exposed.
1135 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( 1136 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>(
1136 mojom::kNavigation_FrameSpec); 1137 mojom::kNavigation_FrameSpec);
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
1641 // Can be NULL in tests. 1642 // Can be NULL in tests.
1642 if (render_thread_impl) 1643 if (render_thread_impl)
1643 render_thread_impl->GetRendererScheduler()->OnNavigationStarted(); 1644 render_thread_impl->GetRendererScheduler()->OnNavigationStarted();
1644 DCHECK(!IsBrowserSideNavigationEnabled()); 1645 DCHECK(!IsBrowserSideNavigationEnabled());
1645 TRACE_EVENT2("navigation,rail", "RenderFrameImpl::OnNavigate", "id", 1646 TRACE_EVENT2("navigation,rail", "RenderFrameImpl::OnNavigate", "id",
1646 routing_id_, "url", common_params.url.possibly_invalid_spec()); 1647 routing_id_, "url", common_params.url.possibly_invalid_spec());
1647 NavigateInternal(common_params, start_params, request_params, 1648 NavigateInternal(common_params, start_params, request_params,
1648 std::unique_ptr<StreamOverrideParameters>()); 1649 std::unique_ptr<StreamOverrideParameters>());
1649 } 1650 }
1650 1651
1651 void RenderFrameImpl::Bind(mojom::FrameRequest request, 1652 void RenderFrameImpl::BindEngagement(
1652 mojom::FrameHostPtr host) { 1653 blink::mojom::EngagementClientAssociatedRequest request) {
1654 engagement_binding_.Bind(std::move(request));
1655 }
1656
1657 void RenderFrameImpl::BindFrame(mojom::FrameRequest request,
1658 mojom::FrameHostPtr host) {
1653 frame_binding_.Bind(std::move(request)); 1659 frame_binding_.Bind(std::move(request));
1654 frame_host_ = std::move(host); 1660 frame_host_ = std::move(host);
1655 frame_host_->GetInterfaceProvider( 1661 frame_host_->GetInterfaceProvider(
1656 std::move(pending_remote_interface_provider_request_)); 1662 std::move(pending_remote_interface_provider_request_));
1657 } 1663 }
1658 1664
1659 ManifestManager* RenderFrameImpl::manifest_manager() { 1665 ManifestManager* RenderFrameImpl::manifest_manager() {
1660 return manifest_manager_; 1666 return manifest_manager_;
1661 } 1667 }
1662 1668
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after
2658 } 2664 }
2659 2665
2660 bool RenderFrameImpl::IsUsingLoFi() const { 2666 bool RenderFrameImpl::IsUsingLoFi() const {
2661 return is_using_lofi_; 2667 return is_using_lofi_;
2662 } 2668 }
2663 2669
2664 bool RenderFrameImpl::IsPasting() const { 2670 bool RenderFrameImpl::IsPasting() const {
2665 return is_pasting_; 2671 return is_pasting_;
2666 } 2672 }
2667 2673
2674 // blink::mojom::EngagementClient implementation -------------------------------
2675
2676 void RenderFrameImpl::SetEngagementLevel(const url::Origin& origin,
2677 blink::mojom::EngagementLevel level) {
2678 // Set the engagement level on |frame_| if its origin matches the one we have
2679 // been provided with.
2680 if (frame_ && url::Origin(frame_->getSecurityOrigin()) == origin) {
2681 frame_->setEngagementLevel(level);
2682 return;
2683 }
2684
2685 engagement_levels_[origin] = level;
2686 }
2687
2668 // mojom::Frame implementation ------------------------------------------------- 2688 // mojom::Frame implementation -------------------------------------------------
2669 2689
2670 void RenderFrameImpl::GetInterfaceProvider( 2690 void RenderFrameImpl::GetInterfaceProvider(
2671 service_manager::mojom::InterfaceProviderRequest request) { 2691 service_manager::mojom::InterfaceProviderRequest request) {
2672 service_manager::ServiceInfo child_info = 2692 service_manager::ServiceInfo child_info =
2673 ChildThreadImpl::current()->GetChildServiceInfo(); 2693 ChildThreadImpl::current()->GetChildServiceInfo();
2674 service_manager::ServiceInfo browser_info = 2694 service_manager::ServiceInfo browser_info =
2675 ChildThreadImpl::current()->GetBrowserServiceInfo(); 2695 ChildThreadImpl::current()->GetBrowserServiceInfo();
2676 2696
2677 service_manager::InterfaceProviderSpec child_spec, browser_spec; 2697 service_manager::InterfaceProviderSpec child_spec, browser_spec;
(...skipping 2077 matching lines...) Expand 10 before | Expand all | Expand 10 after
4755 4775
4756 const WebURLRequest& request = ds->request(); 4776 const WebURLRequest& request = ds->request();
4757 const WebURLResponse& response = ds->response(); 4777 const WebURLResponse& response = ds->response();
4758 4778
4759 DocumentState* document_state = DocumentState::FromDataSource(ds); 4779 DocumentState* document_state = DocumentState::FromDataSource(ds);
4760 NavigationStateImpl* navigation_state = 4780 NavigationStateImpl* navigation_state =
4761 static_cast<NavigationStateImpl*>(document_state->navigation_state()); 4781 static_cast<NavigationStateImpl*>(document_state->navigation_state());
4762 InternalDocumentStateData* internal_data = 4782 InternalDocumentStateData* internal_data =
4763 InternalDocumentStateData::FromDocumentState(document_state); 4783 InternalDocumentStateData::FromDocumentState(document_state);
4764 4784
4785 // Set the correct engagement level on the frame.
4786 EngagementLevels::iterator engagement_level =
4787 engagement_levels_.find(url::Origin(frame_->getSecurityOrigin()));
4788
4789 if (engagement_level != engagement_levels_.end())
4790 frame_->setEngagementLevel(engagement_level->second);
4791 engagement_levels_.clear();
4792
4765 FrameHostMsg_DidCommitProvisionalLoad_Params params; 4793 FrameHostMsg_DidCommitProvisionalLoad_Params params;
4766 params.http_status_code = response.httpStatusCode(); 4794 params.http_status_code = response.httpStatusCode();
4767 params.url_is_unreachable = ds->hasUnreachableURL(); 4795 params.url_is_unreachable = ds->hasUnreachableURL();
4768 params.method = "GET"; 4796 params.method = "GET";
4769 params.intended_as_new_entry = 4797 params.intended_as_new_entry =
4770 navigation_state->request_params().intended_as_new_entry; 4798 navigation_state->request_params().intended_as_new_entry;
4771 params.did_create_new_entry = commit_type == blink::WebStandardCommit; 4799 params.did_create_new_entry = commit_type == blink::WebStandardCommit;
4772 params.should_replace_current_entry = ds->replacesCurrentHistoryItem(); 4800 params.should_replace_current_entry = ds->replacesCurrentHistoryItem();
4773 params.post_id = -1; 4801 params.post_id = -1;
4774 params.nav_entry_id = navigation_state->request_params().nav_entry_id; 4802 params.nav_entry_id = navigation_state->request_params().nav_entry_id;
(...skipping 1731 matching lines...) Expand 10 before | Expand all | Expand 10 after
6506 // Mimics the order of events sent by WebKit. 6534 // Mimics the order of events sent by WebKit.
6507 // See WebCore::Editor::setComposition() for the corresponding code. 6535 // See WebCore::Editor::setComposition() for the corresponding code.
6508 focused_pepper_plugin_->HandleCompositionEnd(text); 6536 focused_pepper_plugin_->HandleCompositionEnd(text);
6509 focused_pepper_plugin_->HandleTextInput(text); 6537 focused_pepper_plugin_->HandleTextInput(text);
6510 } 6538 }
6511 pepper_composition_text_.clear(); 6539 pepper_composition_text_.clear();
6512 } 6540 }
6513 #endif // ENABLE_PLUGINS 6541 #endif // ENABLE_PLUGINS
6514 6542
6515 void RenderFrameImpl::RegisterMojoInterfaces() { 6543 void RenderFrameImpl::RegisterMojoInterfaces() {
6544 GetAssociatedInterfaceRegistry()->AddInterface(
6545 base::Bind(&RenderFrameImpl::BindEngagement, weak_factory_.GetWeakPtr()));
6546
6516 if (!frame_->parent()) { 6547 if (!frame_->parent()) {
6517 // Only main frame have ImageDownloader service. 6548 // Only main frame have ImageDownloader service.
6518 GetInterfaceRegistry()->AddInterface(base::Bind( 6549 GetInterfaceRegistry()->AddInterface(base::Bind(
6519 &ImageDownloaderImpl::CreateMojoService, base::Unretained(this))); 6550 &ImageDownloaderImpl::CreateMojoService, base::Unretained(this)));
6520 6551
6521 // Host zoom is per-page, so only added on the main frame. 6552 // Host zoom is per-page, so only added on the main frame.
6522 GetAssociatedInterfaceRegistry()->AddInterface(base::Bind( 6553 GetAssociatedInterfaceRegistry()->AddInterface(base::Bind(
6523 &RenderFrameImpl::OnHostZoomClientRequest, weak_factory_.GetWeakPtr())); 6554 &RenderFrameImpl::OnHostZoomClientRequest, weak_factory_.GetWeakPtr()));
6524 } 6555 }
6525 } 6556 }
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
6696 // event target. Potentially a Pepper plugin will receive the event. 6727 // event target. Potentially a Pepper plugin will receive the event.
6697 // In order to tell whether a plugin gets the last mouse event and which it 6728 // In order to tell whether a plugin gets the last mouse event and which it
6698 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6729 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6699 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6730 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6700 // |pepper_last_mouse_event_target_|. 6731 // |pepper_last_mouse_event_target_|.
6701 pepper_last_mouse_event_target_ = nullptr; 6732 pepper_last_mouse_event_target_ = nullptr;
6702 #endif 6733 #endif
6703 } 6734 }
6704 6735
6705 } // namespace content 6736 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698