Media Engagement: Allow high MEI sites to bypass autoplay policies.

Sites with a high MEI score should bypass autoplay policies. This
is behind a feature flag that is separate from collecting the data.

BUG=738454

Change-Id: I6eb64a0ce0b196332d380337f5ed333f903f9784
Reviewed-on: https://chromium-review.googlesource.com/558348
Commit-Queue: Becca Hughes <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Reviewed-by: Mounir Lamouri <[email protected]>
Reviewed-by: Jochen Eisinger <[email protected]>
Cr-Commit-Position: refs/heads/master@{#490038}
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 632b4ef..8f4d33d 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -69,6 +69,7 @@
 #include "third_party/WebKit/public/platform/WebLoadingBehaviorFlag.h"
 #include "third_party/WebKit/public/platform/WebMediaPlayer.h"
 #include "third_party/WebKit/public/platform/WebPageVisibilityState.h"
+#include "third_party/WebKit/public/platform/media_engagement.mojom.h"
 #include "third_party/WebKit/public/platform/site_engagement.mojom.h"
 #include "third_party/WebKit/public/web/WebAXObject.h"
 #include "third_party/WebKit/public/web/WebDataSource.h"
@@ -173,6 +174,7 @@
 class CONTENT_EXPORT RenderFrameImpl
     : public RenderFrame,
       NON_EXPORTED_BASE(blink::mojom::EngagementClient),
+      NON_EXPORTED_BASE(blink::mojom::MediaEngagementClient),
       NON_EXPORTED_BASE(mojom::Frame),
       NON_EXPORTED_BASE(mojom::HostZoom),
       NON_EXPORTED_BASE(mojom::FrameBindingsControl),
@@ -475,6 +477,9 @@
   void SetEngagementLevel(const url::Origin& origin,
                           blink::mojom::EngagementLevel level) override;
 
+  // blink::mojom::MediaEngagementClient implementation:
+  void SetHasHighMediaEngagement(const url::Origin& origin) override;
+
   // mojom::Frame implementation:
   void GetInterfaceProvider(
       service_manager::mojom::InterfaceProviderRequest request) override;
@@ -694,6 +699,10 @@
   // Binds to the site engagement service in the browser.
   void BindEngagement(blink::mojom::EngagementClientAssociatedRequest request);
 
+  // Binds to the media engagement service in the browser.
+  void BindMediaEngagement(
+      blink::mojom::MediaEngagementClientAssociatedRequest request);
+
   // Binds to the FrameHost in the browser.
   void BindFrame(const service_manager::BindSourceInfo& browser_info,
                  mojom::FrameRequest request,
@@ -1394,8 +1403,11 @@
 
   HostZoomLevels host_zoom_levels_;
   EngagementOriginAndLevel engagement_level_;
+  url::Origin high_media_engagement_origin_;
 
   mojo::AssociatedBinding<blink::mojom::EngagementClient> engagement_binding_;
+  mojo::AssociatedBinding<blink::mojom::MediaEngagementClient>
+      media_engagement_binding_;
   mojo::Binding<mojom::Frame> frame_binding_;
   mojo::AssociatedBinding<mojom::HostZoom> host_zoom_binding_;
   mojo::AssociatedBinding<mojom::FrameBindingsControl>