| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/service_manager/service_manager_context.h" | 5 #include "content/browser/service_manager/service_manager_context.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 #include "services/device/device_service.h" | 43 #include "services/device/device_service.h" |
| 44 #include "services/device/public/interfaces/constants.mojom.h" | 44 #include "services/device/public/interfaces/constants.mojom.h" |
| 45 #include "services/service_manager/connect_params.h" | 45 #include "services/service_manager/connect_params.h" |
| 46 #include "services/service_manager/public/cpp/connector.h" | 46 #include "services/service_manager/public/cpp/connector.h" |
| 47 #include "services/service_manager/public/cpp/service.h" | 47 #include "services/service_manager/public/cpp/service.h" |
| 48 #include "services/service_manager/public/interfaces/service.mojom.h" | 48 #include "services/service_manager/public/interfaces/service.mojom.h" |
| 49 #include "services/service_manager/runner/common/client_util.h" | 49 #include "services/service_manager/runner/common/client_util.h" |
| 50 #include "services/service_manager/service_manager.h" | 50 #include "services/service_manager/service_manager.h" |
| 51 #include "services/shape_detection/public/interfaces/constants.mojom.h" | 51 #include "services/shape_detection/public/interfaces/constants.mojom.h" |
| 52 | 52 |
| 53 #if defined(OS_ANDROID) |
| 54 #include "base/android/context_utils.h" |
| 55 #include "base/android/jni_android.h" |
| 56 #include "base/android/scoped_java_ref.h" |
| 57 #include "jni/ContentNfcDelegate_jni.h" |
| 58 #endif |
| 59 |
| 53 namespace content { | 60 namespace content { |
| 54 | 61 |
| 55 namespace { | 62 namespace { |
| 56 | 63 |
| 57 base::LazyInstance<std::unique_ptr<service_manager::Connector>>::Leaky | 64 base::LazyInstance<std::unique_ptr<service_manager::Connector>>::Leaky |
| 58 g_io_thread_connector = LAZY_INSTANCE_INITIALIZER; | 65 g_io_thread_connector = LAZY_INSTANCE_INITIALIZER; |
| 59 | 66 |
| 60 void DestroyConnectorOnIOThread() { g_io_thread_connector.Get().reset(); } | 67 void DestroyConnectorOnIOThread() { g_io_thread_connector.Get().reset(); } |
| 61 | 68 |
| 62 void StartServiceInUtilityProcess( | 69 void StartServiceInUtilityProcess( |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 service_manager::mojom::PIDReceiverPtr pid_receiver; | 288 service_manager::mojom::PIDReceiverPtr pid_receiver; |
| 282 packaged_services_connection_->GetConnector()->StartService( | 289 packaged_services_connection_->GetConnector()->StartService( |
| 283 service_manager::Identity(mojom::kBrowserServiceName, | 290 service_manager::Identity(mojom::kBrowserServiceName, |
| 284 service_manager::mojom::kRootUserID), | 291 service_manager::mojom::kRootUserID), |
| 285 std::move(root_browser_service), mojo::MakeRequest(&pid_receiver)); | 292 std::move(root_browser_service), mojo::MakeRequest(&pid_receiver)); |
| 286 pid_receiver->SetPID(base::GetCurrentProcId()); | 293 pid_receiver->SetPID(base::GetCurrentProcId()); |
| 287 | 294 |
| 288 | 295 |
| 289 ServiceInfo device_info; | 296 ServiceInfo device_info; |
| 290 #if defined(OS_ANDROID) | 297 #if defined(OS_ANDROID) |
| 291 // See the comments on wake_lock_context_host.h for details on this | 298 JNIEnv* env = base::android::AttachCurrentThread(); |
| 292 // callback. | 299 base::android::ScopedJavaGlobalRef<jobject> java_nfc_delegate; |
| 300 java_nfc_delegate.Reset(Java_ContentNfcDelegate_create(env)); |
| 301 DCHECK(!java_nfc_delegate.is_null()); |
| 302 |
| 303 // See the comments on wake_lock_context_host.h and ContentNfcDelegate.java |
| 304 // respectively for comments on those parameters. |
| 293 device_info.factory = | 305 device_info.factory = |
| 294 base::Bind(&device::CreateDeviceService, | 306 base::Bind(&device::CreateDeviceService, |
| 295 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE), | 307 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE), |
| 296 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), | 308 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), |
| 297 base::Bind(&WakeLockContextHost::GetNativeViewForContext)); | 309 base::Bind(&WakeLockContextHost::GetNativeViewForContext), |
| 310 std::move(java_nfc_delegate)); |
| 298 #else | 311 #else |
| 299 device_info.factory = | 312 device_info.factory = |
| 300 base::Bind(&device::CreateDeviceService, | 313 base::Bind(&device::CreateDeviceService, |
| 301 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE), | 314 BrowserThread::GetTaskRunnerForThread(BrowserThread::FILE), |
| 302 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); | 315 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); |
| 303 #endif | 316 #endif |
| 304 device_info.task_runner = base::ThreadTaskRunnerHandle::Get(); | 317 device_info.task_runner = base::ThreadTaskRunnerHandle::Get(); |
| 305 packaged_services_connection_->AddEmbeddedService(device::mojom::kServiceName, | 318 packaged_services_connection_->AddEmbeddedService(device::mojom::kServiceName, |
| 306 device_info); | 319 device_info); |
| 307 | 320 |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 base::Bind(&DestroyConnectorOnIOThread)); | 399 base::Bind(&DestroyConnectorOnIOThread)); |
| 387 } | 400 } |
| 388 | 401 |
| 389 // static | 402 // static |
| 390 service_manager::Connector* ServiceManagerContext::GetConnectorForIOThread() { | 403 service_manager::Connector* ServiceManagerContext::GetConnectorForIOThread() { |
| 391 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 404 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 392 return g_io_thread_connector.Get().get(); | 405 return g_io_thread_connector.Get().get(); |
| 393 } | 406 } |
| 394 | 407 |
| 395 } // namespace content | 408 } // namespace content |
| OLD | NEW |