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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_frame_impl.cc
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 00f17b47be2c3ea857ea9936a7d166eba36af23f..a35d221634d029542948a69adcde64ec3daf7d08 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -1105,6 +1105,7 @@ RenderFrameImpl::RenderFrameImpl(const CreateParams& params)
focused_pepper_plugin_(nullptr),
pepper_last_mouse_event_target_(nullptr),
#endif
+ engagement_binding_(this),
frame_binding_(this),
host_zoom_binding_(this),
has_accessed_initial_document_(false),
@@ -1629,8 +1630,13 @@ void RenderFrameImpl::OnNavigate(
std::unique_ptr<StreamOverrideParameters>());
}
-void RenderFrameImpl::Bind(mojom::FrameRequest request,
- mojom::FrameHostPtr host) {
+void RenderFrameImpl::BindEngagement(
+ blink::mojom::EngagementClientAssociatedRequest request) {
+ engagement_binding_.Bind(std::move(request));
+}
+
+void RenderFrameImpl::BindFrame(mojom::FrameRequest request,
+ mojom::FrameHostPtr host) {
frame_binding_.Bind(std::move(request));
frame_host_ = std::move(host);
frame_host_->GetInterfaceProvider(
@@ -2646,6 +2652,20 @@ bool RenderFrameImpl::IsPasting() const {
return is_pasting_;
}
+// blink::mojom::EngagementClient implementation -------------------------------
+
+void RenderFrameImpl::SetEngagementLevel(const url::Origin& origin,
esprehn 2016/12/06 00:31:34 Why do you need to pass an origin? If you connect
dominickn 2016/12/06 00:49:57 nasko suggested passing the origin here like the H
nasko 2016/12/06 00:50:30 Because a single frame can render multiple origins
esprehn 2016/12/06 00:58:44 Right, but that's true of all things using the Ser
dominickn 2016/12/08 02:37:10 USB doesn't need to request a permission prior to
nasko 2016/12/08 22:26:48 If your Mojo interface is bound to the lifetime of
+ blink::mojom::EngagementLevel level) {
+ // Set the engagement level on |frame_| if its origin matches the one we have
+ // been provided with.
+ if (frame_ && url::Origin(frame_->getSecurityOrigin()) == origin) {
+ frame_->setEngagementLevel(level);
+ return;
+ }
+
+ engagement_levels_[origin] = level;
+}
+
// mojom::Frame implementation -------------------------------------------------
void RenderFrameImpl::GetInterfaceProvider(
@@ -4732,6 +4752,14 @@ void RenderFrameImpl::SendDidCommitProvisionalLoad(
InternalDocumentStateData* internal_data =
InternalDocumentStateData::FromDocumentState(document_state);
+ // Set the correct engagement level on the frame.
+ EngagementLevels::iterator engagement_level =
+ engagement_levels_.find(url::Origin(frame_->getSecurityOrigin()));
+
+ if (engagement_level != engagement_levels_.end())
+ frame_->setEngagementLevel(engagement_level->second);
esprehn 2016/12/06 00:31:34 This seems like something we should be able to man
dominickn 2016/12/06 00:49:57 See comment below regarding this being sent pre-co
+ engagement_levels_.clear();
dcheng 2016/12/08 08:14:07 Out of curiosity... why do we need to maintain a m
dominickn 2016/12/08 09:02:47 I implemented it analogously to the HostZoom featu
+
FrameHostMsg_DidCommitProvisionalLoad_Params params;
params.http_status_code = response.httpStatusCode();
params.url_is_unreachable = ds->hasUnreachableURL();
@@ -6484,6 +6512,9 @@ void RenderFrameImpl::HandlePepperImeCommit(const base::string16& text) {
#endif // ENABLE_PLUGINS
void RenderFrameImpl::RegisterMojoInterfaces() {
+ GetAssociatedInterfaceRegistry()->AddInterface(
+ base::Bind(&RenderFrameImpl::BindEngagement, weak_factory_.GetWeakPtr()));
esprehn 2016/12/06 00:31:34 You should be able to connect to this interface di
dominickn 2016/12/06 00:49:57 I'm not sure what you mean. The IPC from the brows
nasko 2016/12/08 22:26:48 It doesn't strictly need to be a map, but it needs
+
if (!frame_->parent()) {
// Only main frame have ImageDownloader service.
GetInterfaceRegistry()->AddInterface(base::Bind(

Powered by Google App Engine
This is Rietveld 408576698