Index: components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java |
diff --git a/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java b/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8d230160c106151ed75e09718f256bce0339f210 |
--- /dev/null |
+++ b/components/devtools_bridge/android/javatests/src/org/chromium/components/devtools_bridge/tests/DebugService.java |
@@ -0,0 +1,111 @@ |
+// Copyright 2014 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.components.devtools_bridge.tests; |
+ |
+import android.app.Notification; |
+import android.app.PendingIntent; |
+import android.app.Service; |
+import android.content.Intent; |
+import android.os.Binder; |
+import android.os.IBinder; |
+import android.os.Process; |
+import android.widget.Toast; |
+ |
+import org.chromium.components.devtools_bridge.LocalTunnelBridge; |
+ |
+import java.io.IOException; |
+ |
+/** |
+ * Service for testing devtools bridge. |
+ */ |
+public class DebugService extends Service { |
+ private static final String PACKAGE = "org.chromium.components.devtools_bridge.tests"; |
+ public static final String START_ACTION = PACKAGE + ".START_ACTION"; |
+ public static final String STOP_ACTION = PACKAGE + ".STOP_ACTION"; |
+ private static final int NOTIFICATION_ID = 1; |
+ |
+ private LocalTunnelBridge mBridge; |
+ |
+ private LocalTunnelBridge createBridge() throws IOException { |
+ String exposingSocketName = "webview_devtools_remote_" + Integer.valueOf(Process.myPid()); |
+ return new LocalTunnelBridge("chrome_shell_devtools_remote", exposingSocketName); |
+ } |
+ |
+ @Override |
+ public int onStartCommand(Intent intent, int flags, int startId) { |
+ if (intent == null) return START_NOT_STICKY; |
+ |
+ String action = intent.getAction(); |
+ if (START_ACTION.equals(action)) { |
+ return start(); |
+ } else if (STOP_ACTION.equals(action)) { |
+ return stop(); |
+ } |
+ return START_NOT_STICKY; |
+ } |
+ |
+ private int start() { |
+ if (mBridge != null) |
+ return START_NOT_STICKY; |
+ |
+ try { |
+ mBridge = createBridge(); |
+ mBridge.start(); |
+ } catch (Exception e) { |
+ Toast.makeText(this, "Failed to start", Toast.LENGTH_SHORT).show(); |
+ mBridge.dispose(); |
+ mBridge = null; |
+ return START_NOT_STICKY; |
+ } |
+ |
+ startForeground(NOTIFICATION_ID, makeForegroundServiceNotification()); |
+ Toast.makeText(this, "Service started", Toast.LENGTH_SHORT).show(); |
+ return START_STICKY; |
+ } |
+ |
+ private int stop() { |
+ if (mBridge == null) |
+ return START_NOT_STICKY; |
+ |
+ mBridge.stop(); |
+ mBridge.dispose(); |
+ mBridge = null; |
+ stopSelf(); |
+ Toast.makeText(this, "Service stopped", Toast.LENGTH_SHORT).show(); |
+ return START_NOT_STICKY; |
+ } |
+ |
+ @Override |
+ public IBinder onBind(Intent intent) { |
+ return new Binder(); |
+ } |
+ |
+ private Notification makeForegroundServiceNotification() { |
+ Intent showInfoIntent = new Intent(this, DebugActivity.class); |
+ showInfoIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); |
+ PendingIntent showInfoPendingIntent = |
+ PendingIntent.getActivity(DebugService.this, 0, showInfoIntent, 0); |
+ |
+ Intent stopIntent = new Intent(this, DebugService.class); |
+ stopIntent.setAction(STOP_ACTION); |
+ PendingIntent stopPendingIntent = |
+ PendingIntent.getService(DebugService.this, 0, stopIntent, 0); |
+ |
+ return new Notification.Builder(this) |
+ // Mandatory fiends |
+ .setSmallIcon(android.R.drawable.alert_dark_frame) |
+ .setContentTitle("DevTools Bridge") |
+ .setContentText("DevTools socket local test tunnel works") |
+ |
+ // Optional |
+ .setContentIntent(showInfoPendingIntent) |
+ .addAction(android.R.drawable.ic_delete, |
+ "Stop", stopPendingIntent) |
+ .setOngoing(true) |
+ .setWhen(System.currentTimeMillis()) |
+ .build(); |
+ } |
+} |
+ |