OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/gpu/gpu_process_host.h" | 5 #include "content/browser/gpu/gpu_process_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <list> | 10 #include <list> |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
68 #include "services/service_manager/public/cpp/connection.h" | 68 #include "services/service_manager/public/cpp/connection.h" |
69 #include "services/service_manager/public/cpp/interface_provider.h" | 69 #include "services/service_manager/public/cpp/interface_provider.h" |
70 #include "services/service_manager/runner/common/client_util.h" | 70 #include "services/service_manager/runner/common/client_util.h" |
71 #include "ui/base/ui_base_switches.h" | 71 #include "ui/base/ui_base_switches.h" |
72 #include "ui/events/latency_info.h" | 72 #include "ui/events/latency_info.h" |
73 #include "ui/gfx/switches.h" | 73 #include "ui/gfx/switches.h" |
74 #include "ui/gl/gl_switches.h" | 74 #include "ui/gl/gl_switches.h" |
75 | 75 |
76 #if defined(OS_ANDROID) | 76 #if defined(OS_ANDROID) |
77 #include "base/android/build_info.h" | 77 #include "base/android/build_info.h" |
78 #include "content/public/browser/android/java_interfaces.h" | |
79 #include "media/mojo/interfaces/android_overlay.mojom.h" | |
80 #include "services/service_manager/public/cpp/interface_registry.h" | |
78 #endif | 81 #endif |
79 | 82 |
80 #if defined(OS_WIN) | 83 #if defined(OS_WIN) |
81 #include "base/win/windows_version.h" | 84 #include "base/win/windows_version.h" |
82 #include "content/common/sandbox_win.h" | 85 #include "content/common/sandbox_win.h" |
83 #include "sandbox/win/src/sandbox_policy.h" | 86 #include "sandbox/win/src/sandbox_policy.h" |
84 #include "ui/gfx/switches.h" | 87 #include "ui/gfx/switches.h" |
85 #include "ui/gfx/win/rendering_window_manager.h" | 88 #include "ui/gfx/win/rendering_window_manager.h" |
86 #endif | 89 #endif |
87 | 90 |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
311 void HostLoadedShader(int host_id, | 314 void HostLoadedShader(int host_id, |
312 const std::string& key, | 315 const std::string& key, |
313 const std::string& data) { | 316 const std::string& data) { |
314 GpuProcessHost* host = GpuProcessHost::FromID(host_id); | 317 GpuProcessHost* host = GpuProcessHost::FromID(host_id); |
315 if (host) | 318 if (host) |
316 host->LoadedShader(key, data); | 319 host->LoadedShader(key, data); |
317 } | 320 } |
318 | 321 |
319 } // anonymous namespace | 322 } // anonymous namespace |
320 | 323 |
324 #if defined(OS_ANDROID) | |
325 template <typename InterfaceType> | |
326 void AddUIInterfaceHelper(service_manager::InterfaceRegistry* registry) { | |
boliu
2017/02/16 22:24:19
Hmm, I don't know mojo at all.. my immediate quest
liberato (no reviews please)
2017/02/17 17:47:12
(fixed per rockot@'s suggestions.)
| |
327 registry->AddInterface( | |
328 content::GetGlobalJavaInterfaces() | |
329 ->CreateInterfaceFactory<InterfaceType>(), | |
330 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)); | |
331 } | |
332 | |
333 template <typename InterfaceType> | |
334 void AddUIInterface(service_manager::InterfaceRegistry* registry) { | |
335 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI) | |
336 ->PostTask(FROM_HERE, | |
337 base::Bind(&AddUIInterfaceHelper<InterfaceType>, registry)); | |
Ken Rockot(use gerrit already)
2017/02/17 06:29:56
This is not safe, and CreateInterfaceFactory() whi
liberato (no reviews please)
2017/02/17 17:47:12
thank you very much!
| |
338 } | |
339 #endif | |
340 | |
321 class GpuProcessHost::ConnectionFilterImpl : public ConnectionFilter { | 341 class GpuProcessHost::ConnectionFilterImpl : public ConnectionFilter { |
322 public: | 342 public: |
323 ConnectionFilterImpl(GpuProcessHost* host) : host_(host) {} | 343 ConnectionFilterImpl(GpuProcessHost* host) : host_(host) {} |
324 | 344 |
325 private: | 345 private: |
326 // ConnectionFilter: | 346 // ConnectionFilter: |
327 bool OnConnect(const service_manager::Identity& remote_identity, | 347 bool OnConnect(const service_manager::Identity& remote_identity, |
328 service_manager::InterfaceRegistry* registry, | 348 service_manager::InterfaceRegistry* registry, |
329 service_manager::Connector* connector) override { | 349 service_manager::Connector* connector) override { |
330 if (remote_identity.name() != mojom::kGpuServiceName) | 350 if (remote_identity.name() != mojom::kGpuServiceName) |
331 return false; | 351 return false; |
332 | 352 |
333 GetContentClient()->browser()->ExposeInterfacesToGpuProcess(registry, | 353 GetContentClient()->browser()->ExposeInterfacesToGpuProcess(registry, |
334 host_); | 354 host_); |
355 | |
356 #if defined(OS_ANDROID) | |
357 AddUIInterface<media::mojom::AndroidOverlayProvider>(registry); | |
358 #endif | |
359 | |
335 return true; | 360 return true; |
336 } | 361 } |
337 | 362 |
338 GpuProcessHost* host_; | 363 GpuProcessHost* host_; |
339 | 364 |
340 DISALLOW_COPY_AND_ASSIGN(ConnectionFilterImpl); | 365 DISALLOW_COPY_AND_ASSIGN(ConnectionFilterImpl); |
341 }; | 366 }; |
342 | 367 |
343 // static | 368 // static |
344 bool GpuProcessHost::ValidateHost(GpuProcessHost* host) { | 369 bool GpuProcessHost::ValidateHost(GpuProcessHost* host) { |
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1185 GetShaderCacheFactorySingleton()->Get(client_id); | 1210 GetShaderCacheFactorySingleton()->Get(client_id); |
1186 if (!cache.get()) | 1211 if (!cache.get()) |
1187 return; | 1212 return; |
1188 | 1213 |
1189 cache->set_shader_loaded_callback(base::Bind(&HostLoadedShader, host_id_)); | 1214 cache->set_shader_loaded_callback(base::Bind(&HostLoadedShader, host_id_)); |
1190 | 1215 |
1191 client_id_to_shader_cache_[client_id] = cache; | 1216 client_id_to_shader_cache_[client_id] = cache; |
1192 } | 1217 } |
1193 | 1218 |
1194 } // namespace content | 1219 } // namespace content |
OLD | NEW |