Commit 0565a2f5 authored by Jiawei Li's avatar Jiawei Li Committed by Commit Bot

[chromecast] Host QueryableDataHost in CastWebContents

CastWebContents now provides a getter to access QueryableDataHost. If
InitParams::provide_queryable_data_host is set false, the getter will
return a nullptr (for non Cast application page).

Merge-With: eureka-internal/342948

Bug: internal b/144316072
Test: CQ
Change-Id: I44a2aefbed9fcdcf5481423d073ffc42a8ee358d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1956252Reviewed-by: default avatarYuchen Liu <yucliu@chromium.org>
Reviewed-by: default avatarSean Topping <seantopping@chromium.org>
Commit-Queue: Jiawei Li <lijiawei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#722720}
parent 07842c81
...@@ -30,6 +30,8 @@ class WebContents; ...@@ -30,6 +30,8 @@ class WebContents;
namespace chromecast { namespace chromecast {
class QueryableDataHost;
struct RendererFeature { struct RendererFeature {
const std::string name; const std::string name;
base::Value value; base::Value value;
...@@ -210,6 +212,10 @@ class CastWebContents { ...@@ -210,6 +212,10 @@ class CastWebContents {
bool enable_websql = false; bool enable_websql = false;
// Enable mixer audio support for this CastWebContents. // Enable mixer audio support for this CastWebContents.
bool enable_mixer_audio = false; bool enable_mixer_audio = false;
// Whether to provide a QueryableDataHost for this CastWebContents.
// Clients can use it to send queryable values to the render frames.
// queryable_data_host() will return a nullptr if this is false.
bool enable_queryable_data_host = false;
InitParams(); InitParams();
InitParams(const InitParams& other); InitParams(const InitParams& other);
...@@ -244,6 +250,10 @@ class CastWebContents { ...@@ -244,6 +250,10 @@ class CastWebContents {
virtual content::WebContents* web_contents() const = 0; virtual content::WebContents* web_contents() const = 0;
virtual PageState page_state() const = 0; virtual PageState page_state() const = 0;
// Returns QueryableDataHost that is used to push values to the renderer.
// Returns nullptr if the new queryable data bindings is enabled.
virtual QueryableDataHost* queryable_data_host() const = 0;
// =========================================================================== // ===========================================================================
// Initialization and Setup // Initialization and Setup
// =========================================================================== // ===========================================================================
......
...@@ -13,10 +13,13 @@ ...@@ -13,10 +13,13 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/sequenced_task_runner_handle.h"
#include "base/values.h" #include "base/values.h"
#include "chromecast/activity/queryable_data_host.h"
#include "chromecast/base/cast_features.h"
#include "chromecast/base/chromecast_switches.h" #include "chromecast/base/chromecast_switches.h"
#include "chromecast/base/metrics/cast_metrics_helper.h" #include "chromecast/base/metrics/cast_metrics_helper.h"
#include "chromecast/browser/cast_browser_process.h" #include "chromecast/browser/cast_browser_process.h"
#include "chromecast/browser/devtools/remote_debugging_server.h" #include "chromecast/browser/devtools/remote_debugging_server.h"
#include "chromecast/browser/queryable_data_host_cast.h"
#include "chromecast/common/mojom/media_playback_options.mojom.h" #include "chromecast/common/mojom/media_playback_options.mojom.h"
#include "chromecast/common/mojom/on_load_script_injector.mojom.h" #include "chromecast/common/mojom/on_load_script_injector.mojom.h"
#include "chromecast/common/mojom/queryable_data_store.mojom.h" #include "chromecast/common/mojom/queryable_data_store.mojom.h"
...@@ -139,6 +142,13 @@ CastWebContentsImpl::CastWebContentsImpl(content::WebContents* web_contents, ...@@ -139,6 +142,13 @@ CastWebContentsImpl::CastWebContentsImpl(content::WebContents* web_contents,
if (GetSwitchValueBoolean(switches::kDisableMojoRenderer, false)) { if (GetSwitchValueBoolean(switches::kDisableMojoRenderer, false)) {
use_cma_renderer_ = false; use_cma_renderer_ = false;
} }
// Provides QueryableDataHostCast if the new QueryableData bindings is not
// enabled.
if (init_params.enable_queryable_data_host) {
queryable_data_host_ =
std::make_unique<QueryableDataHostCast>(web_contents_);
}
} }
CastWebContentsImpl::~CastWebContentsImpl() { CastWebContentsImpl::~CastWebContentsImpl() {
...@@ -167,6 +177,10 @@ CastWebContents::PageState CastWebContentsImpl::page_state() const { ...@@ -167,6 +177,10 @@ CastWebContents::PageState CastWebContentsImpl::page_state() const {
return page_state_; return page_state_;
} }
QueryableDataHost* CastWebContentsImpl::queryable_data_host() const {
return queryable_data_host_.get();
}
void CastWebContentsImpl::AddRendererFeatures( void CastWebContentsImpl::AddRendererFeatures(
std::vector<RendererFeature> features) { std::vector<RendererFeature> features) {
for (auto& feature : features) { for (auto& feature : features) {
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
namespace chromecast { namespace chromecast {
class QueryableDataHost;
namespace shell { namespace shell {
class RemoteDebuggingServer; class RemoteDebuggingServer;
} // namespace shell } // namespace shell
...@@ -43,6 +45,8 @@ class CastWebContentsImpl : public CastWebContents, ...@@ -43,6 +45,8 @@ class CastWebContentsImpl : public CastWebContents,
content::WebContents* web_contents() const override; content::WebContents* web_contents() const override;
PageState page_state() const override; PageState page_state() const override;
QueryableDataHost* queryable_data_host() const override;
// CastWebContents implementation: // CastWebContents implementation:
int tab_id() const override; int tab_id() const override;
void AddRendererFeatures(std::vector<RendererFeature> features) override; void AddRendererFeatures(std::vector<RendererFeature> features) override;
...@@ -177,6 +181,8 @@ class CastWebContentsImpl : public CastWebContents, ...@@ -177,6 +181,8 @@ class CastWebContentsImpl : public CastWebContents,
base::flat_map<InterfaceSet, service_manager::InterfaceProvider*> base::flat_map<InterfaceSet, service_manager::InterfaceProvider*>
interface_providers_map_; interface_providers_map_;
std::unique_ptr<QueryableDataHost> queryable_data_host_;
SEQUENCE_CHECKER(sequence_checker_); SEQUENCE_CHECKER(sequence_checker_);
base::WeakPtrFactory<CastWebContentsImpl> weak_factory_; base::WeakPtrFactory<CastWebContentsImpl> weak_factory_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment