Index: services/camera/src/org/chromium/services/camera/CameraApp.java |
diff --git a/services/camera/src/org/chromium/services/camera/CameraApp.java b/services/camera/src/org/chromium/services/camera/CameraApp.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..76fabd52827296d24952af14f3b4a69567e17141 |
--- /dev/null |
+++ b/services/camera/src/org/chromium/services/camera/CameraApp.java |
@@ -0,0 +1,61 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.services.camera; |
+ |
+import android.content.Context; |
+ |
+import org.chromium.mojo.application.ApplicationConnection; |
+import org.chromium.mojo.application.ApplicationDelegate; |
+import org.chromium.mojo.application.ApplicationRunner; |
+import org.chromium.mojo.application.ServiceFactoryBinder; |
+import org.chromium.mojo.bindings.InterfaceRequest; |
+import org.chromium.mojo.system.Core; |
+import org.chromium.mojo.system.MessagePipeHandle; |
+import org.chromium.mojom.mojo.CameraService; |
+import org.chromium.mojom.mojo.Shell; |
+ |
+class CameraApp implements ApplicationDelegate { |
+ private CameraServiceImpl mCameraServiceImpl; |
+ |
+ public CameraApp(Context context, Core core) { |
+ mCameraServiceImpl = new CameraServiceImpl(context, core); |
+ } |
+ |
+ public void initialize(Shell shell, String[] args, String url) { |
+ } |
+ |
+ @Override |
+ public boolean configureIncomingConnection(final ApplicationConnection connection) { |
+ connection.addService(new ServiceFactoryBinder<CameraService>() { |
+ @Override |
+ public void bind(InterfaceRequest<CameraService> request) { |
+ if (mCameraServiceImpl.cameraInUse()) { |
+ /* another application is using the camera */ |
+ /* TODO: support multiplexing the camera stream to multiple applications */ |
+ request.close(); |
+ return; |
+ } |
+ mCameraServiceImpl.openCamera(); |
+ CameraService.MANAGER.bind(mCameraServiceImpl, request); |
+ } |
+ |
+ @Override |
+ public String getInterfaceName() { |
+ return CameraService.MANAGER.getName(); |
+ } |
+ }); |
+ return true; |
+ } |
+ |
+ @Override |
+ public void quit() { |
+ mCameraServiceImpl.cleanup(); |
+ } |
+ |
+ public static void mojoMain(Context context, Core core, |
+ MessagePipeHandle applicationRequestHandle) { |
+ ApplicationRunner.run(new CameraApp(context, core), core, applicationRequestHandle); |
+ } |
+} |