|
17 | 17 | #include <string> |
18 | 18 |
|
19 | 19 | #include "cobalt/browser/cobalt_browser_interface_binders.h" |
| 20 | +#include "cobalt/browser/cobalt_web_contents_observer.h" |
| 21 | +#include "cobalt/media/service/mojom/video_geometry_setter.mojom.h" |
20 | 22 | #include "cobalt/user_agent/user_agent_platform_info.h" |
| 23 | +#include "content/public/browser/browser_thread.h" |
| 24 | +#include "content/public/browser/render_process_host.h" |
| 25 | +#include "content/public/browser/web_contents.h" |
21 | 26 | #include "content/public/common/user_agent.h" |
22 | 27 | // TODO(b/390021478): Remove this include when CobaltBrowserMainParts stops |
23 | 28 | // being a ShellBrowserMainParts. |
24 | 29 | #include "content/shell/browser/shell_browser_main_parts.h" |
25 | 30 | #include "third_party/blink/public/common/web_preferences/web_preferences.h" |
26 | 31 |
|
27 | | -#include "base/logging.h" |
28 | | - |
29 | 32 | #if BUILDFLAG(IS_ANDROIDTV) |
30 | 33 | #include "cobalt/browser/android/mojo/cobalt_interface_registrar_android.h" |
31 | 34 | #endif |
@@ -100,54 +103,86 @@ blink::UserAgentMetadata GetCobaltUserAgentMetadata() { |
100 | 103 | return metadata; |
101 | 104 | } |
102 | 105 |
|
103 | | -CobaltContentBrowserClient::CobaltContentBrowserClient() = default; |
| 106 | +CobaltContentBrowserClient::CobaltContentBrowserClient() { |
| 107 | + DETACH_FROM_THREAD(thread_checker_); |
| 108 | +} |
104 | 109 |
|
105 | 110 | CobaltContentBrowserClient::~CobaltContentBrowserClient() = default; |
106 | 111 |
|
| 112 | +void CobaltContentBrowserClient::RenderProcessWillLaunch( |
| 113 | + content::RenderProcessHost* host) { |
| 114 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
| 115 | + single_render_process_observer_.UpdateRenderProcessHost(host); |
| 116 | +} |
| 117 | + |
107 | 118 | std::unique_ptr<content::BrowserMainParts> |
108 | 119 | CobaltContentBrowserClient::CreateBrowserMainParts( |
109 | 120 | bool /* is_integration_test */) { |
| 121 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
110 | 122 | auto browser_main_parts = std::make_unique<CobaltBrowserMainParts>(); |
111 | 123 | set_browser_main_parts(browser_main_parts.get()); |
112 | 124 | return browser_main_parts; |
113 | 125 | } |
114 | 126 |
|
115 | 127 | std::string CobaltContentBrowserClient::GetUserAgent() { |
| 128 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
116 | 129 | return GetCobaltUserAgent(); |
117 | 130 | } |
118 | 131 |
|
119 | 132 | std::string CobaltContentBrowserClient::GetFullUserAgent() { |
| 133 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
120 | 134 | return GetCobaltUserAgent(); |
121 | 135 | } |
122 | 136 |
|
123 | 137 | std::string CobaltContentBrowserClient::GetReducedUserAgent() { |
| 138 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
124 | 139 | return GetCobaltUserAgent(); |
125 | 140 | } |
126 | 141 |
|
127 | 142 | blink::UserAgentMetadata CobaltContentBrowserClient::GetUserAgentMetadata() { |
| 143 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
128 | 144 | return GetCobaltUserAgentMetadata(); |
129 | 145 | } |
130 | 146 |
|
131 | 147 | void CobaltContentBrowserClient::OverrideWebkitPrefs( |
132 | 148 | content::WebContents* web_contents, |
133 | 149 | blink::web_pref::WebPreferences* prefs) { |
| 150 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
134 | 151 | #if !defined(COBALT_IS_RELEASE_BUILD) |
135 | 152 | // Allow creating a ws: connection on a https: page to allow current |
136 | 153 | // testing set up. See b/377410179. |
137 | 154 | prefs->allow_running_insecure_content = true; |
138 | 155 | #endif // !defined(COBALT_IS_RELEASE_BUILD) |
139 | 156 | content::ShellContentBrowserClient::OverrideWebkitPrefs(web_contents, prefs); |
140 | 157 | } |
| 158 | + |
141 | 159 | void CobaltContentBrowserClient::OnWebContentsCreated( |
142 | 160 | content::WebContents* web_contents) { |
| 161 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
143 | 162 | web_contents_observer_.reset(new CobaltWebContentsObserver(web_contents)); |
144 | 163 | } |
| 164 | + |
145 | 165 | void CobaltContentBrowserClient::RegisterBrowserInterfaceBindersForFrame( |
146 | 166 | content::RenderFrameHost* render_frame_host, |
147 | 167 | mojo::BinderMapWithContext<content::RenderFrameHost*>* map) { |
| 168 | + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); |
148 | 169 | PopulateCobaltFrameBinders(render_frame_host, map); |
149 | 170 | ShellContentBrowserClient::RegisterBrowserInterfaceBindersForFrame( |
150 | 171 | render_frame_host, map); |
151 | 172 | } |
152 | 173 |
|
| 174 | +void CobaltContentBrowserClient::BindGpuHostReceiver( |
| 175 | + mojo::GenericPendingReceiver receiver) { |
| 176 | + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 177 | + if (auto r = receiver.As<media::mojom::VideoGeometrySetter>()) { |
| 178 | + const auto renderer_process_id = |
| 179 | + single_render_process_observer_.renderer_id(); |
| 180 | + content::RenderProcessHost* host = |
| 181 | + content::RenderProcessHost::FromID(renderer_process_id); |
| 182 | + if (host) { |
| 183 | + host->BindReceiver(std::move(r)); |
| 184 | + } |
| 185 | + } |
| 186 | +} |
| 187 | + |
153 | 188 | } // namespace cobalt |
0 commit comments