Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1802)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java

Issue 141533006: [Android] Move the java content/ package to content_public/ to start the split. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small fixes and findbugs line update Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java b/content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java
deleted file mode 100644
index e405922df3b2ee1bc72a73527653f26e9e06280b..0000000000000000000000000000000000000000
--- a/content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java
+++ /dev/null
@@ -1,272 +0,0 @@
-// Copyright 2013 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.content.browser;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Environment;
-import android.text.TextUtils;
-import android.util.Log;
-import android.widget.Toast;
-
-import org.chromium.base.CalledByNative;
-import org.chromium.base.JNINamespace;
-import org.chromium.base.TraceEvent;
-import org.chromium.content.R;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.TimeZone;
-
-/**
- * Controller for Chrome's tracing feature.
- *
- * We don't have any UI per se. Just call startTracing() to start and
- * stopTracing() to stop. We'll report progress to the user with Toasts.
- *
- * If the host application registers this class's BroadcastReceiver, you can
- * also start and stop the tracer with a broadcast intent, as follows:
- * <ul>
- * <li>To start tracing: am broadcast -a org.chromium.content_shell_apk.GPU_PROFILER_START
- * <li>Add "-e file /foo/bar/xyzzy" to log trace data to a specific file.
- * <li>To stop tracing: am broadcast -a org.chromium.content_shell_apk.GPU_PROFILER_STOP
- * </ul>
- * Note that the name of these intents change depending on which application
- * is being traced, but the general form is [app package name].GPU_PROFILER_{START,STOP}.
- */
-@JNINamespace("content")
-public class TracingControllerAndroid {
-
- private static final String TAG = "TracingControllerAndroid";
-
- private static final String ACTION_START = "GPU_PROFILER_START";
- private static final String ACTION_STOP = "GPU_PROFILER_STOP";
- private static final String FILE_EXTRA = "file";
- private static final String CATEGORIES_EXTRA = "categories";
- private static final String RECORD_CONTINUOUSLY_EXTRA = "continuous";
- private static final String DEFAULT_CHROME_CATEGORIES_PLACE_HOLDER =
- "_DEFAULT_CHROME_CATEGORIES";
-
- private final Context mContext;
- private final TracingBroadcastReceiver mBroadcastReceiver;
- private final TracingIntentFilter mIntentFilter;
- private boolean mIsTracing;
-
- // We might not want to always show toasts when we start the profiler, especially if
- // showing the toast impacts performance. This gives us the chance to disable them.
- private boolean mShowToasts = true;
-
- private String mFilename;
-
- public TracingControllerAndroid(Context context) {
- mContext = context;
- mBroadcastReceiver = new TracingBroadcastReceiver();
- mIntentFilter = new TracingIntentFilter(context);
- }
-
- /**
- * Get a BroadcastReceiver that can handle profiler intents.
- */
- public BroadcastReceiver getBroadcastReceiver() {
- return mBroadcastReceiver;
- }
-
- /**
- * Get an IntentFilter for profiler intents.
- */
- public IntentFilter getIntentFilter() {
- return mIntentFilter;
- }
-
- /**
- * Register a BroadcastReceiver in the given context.
- */
- public void registerReceiver(Context context) {
- context.registerReceiver(getBroadcastReceiver(), getIntentFilter());
- }
-
- /**
- * Unregister the GPU BroadcastReceiver in the given context.
- * @param context
- */
- public void unregisterReceiver(Context context) {
- context.unregisterReceiver(getBroadcastReceiver());
- }
-
- /**
- * Returns true if we're currently profiling.
- */
- public boolean isTracing() {
- return mIsTracing;
- }
-
- /**
- * Returns the path of the current output file. Null if isTracing() false.
- */
- public String getOutputPath() {
- return mFilename;
- }
-
- /**
- * Start profiling to a new file in the Downloads directory.
- *
- * Calls #startTracing(String, boolean, String, boolean) with a new timestamped filename.
- * @see #startTracing(String, boolean, String, boolean)
- */
- public boolean startTracing(boolean showToasts, String categories,
- boolean recordContinuously) {
- mShowToasts = showToasts;
- String state = Environment.getExternalStorageState();
- if (!Environment.MEDIA_MOUNTED.equals(state)) {
- logAndToastError(
- mContext.getString(R.string.profiler_no_storage_toast));
- return false;
- }
-
- // Generate a hopefully-unique filename using the UTC timestamp.
- // (Not a huge problem if it isn't unique, we'll just append more data.)
- SimpleDateFormat formatter = new SimpleDateFormat(
- "yyyy-MM-dd-HHmmss", Locale.US);
- formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
- File dir = Environment.getExternalStoragePublicDirectory(
- Environment.DIRECTORY_DOWNLOADS);
- File file = new File(
- dir, "chrome-profile-results-" + formatter.format(new Date()));
-
- return startTracing(file.getPath(), showToasts, categories, recordContinuously);
- }
-
- /**
- * Start profiling to the specified file. Returns true on success.
- *
- * Only one TracingControllerAndroid can be running at the same time. If another profiler
- * is running when this method is called, it will be cancelled. If this
- * profiler is already running, this method does nothing and returns false.
- *
- * @param filename The name of the file to output the profile data to.
- * @param showToasts Whether or not we want to show toasts during this profiling session.
- * When we are timing the profile run we might not want to incur extra draw overhead of showing
- * notifications about the profiling system.
- * @param categories Which categories to trace. See TracingControllerAndroid::BeginTracing()
- * (in content/public/browser/trace_controller.h) for the format.
- * @param recordContinuously Record until the user ends the trace. The trace buffer is fixed
- * size and we use it as a ring buffer during recording.
- */
- public boolean startTracing(String filename, boolean showToasts, String categories,
- boolean recordContinuously) {
- mShowToasts = showToasts;
- if (isTracing()) {
- // Don't need a toast because this shouldn't happen via the UI.
- Log.e(TAG, "Received startTracing, but we're already tracing");
- return false;
- }
- // Lazy initialize the native side, to allow construction before the library is loaded.
- if (mNativeTracingControllerAndroid == 0) {
- mNativeTracingControllerAndroid = nativeInit();
- }
- if (!nativeStartTracing(mNativeTracingControllerAndroid, filename, categories,
- recordContinuously)) {
- logAndToastError(mContext.getString(R.string.profiler_error_toast));
- return false;
- }
-
- logAndToastInfo(mContext.getString(R.string.profiler_started_toast) + ": " + categories);
- TraceEvent.setEnabledToMatchNative();
- mFilename = filename;
- mIsTracing = true;
- return true;
- }
-
- /**
- * Stop profiling. This won't take effect until Chrome has flushed its file.
- */
- public void stopTracing() {
- if (isTracing()) {
- nativeStopTracing(mNativeTracingControllerAndroid);
- }
- }
-
- /**
- * Called by native code when the profiler's output file is closed.
- */
- @CalledByNative
- protected void onTracingStopped() {
- if (!isTracing()) {
- // Don't need a toast because this shouldn't happen via the UI.
- Log.e(TAG, "Received onTracingStopped, but we aren't tracing");
- return;
- }
-
- logAndToastInfo(
- mContext.getString(R.string.profiler_stopped_toast, mFilename));
- TraceEvent.setEnabledToMatchNative();
- mIsTracing = false;
- mFilename = null;
- }
-
- @Override
- protected void finalize() {
- if (mNativeTracingControllerAndroid != 0) {
- nativeDestroy(mNativeTracingControllerAndroid);
- mNativeTracingControllerAndroid = 0;
- }
- }
-
- void logAndToastError(String str) {
- Log.e(TAG, str);
- if (mShowToasts) Toast.makeText(mContext, str, Toast.LENGTH_SHORT).show();
- }
-
- void logAndToastInfo(String str) {
- Log.i(TAG, str);
- if (mShowToasts) Toast.makeText(mContext, str, Toast.LENGTH_SHORT).show();
- }
-
- private static class TracingIntentFilter extends IntentFilter {
- TracingIntentFilter(Context context) {
- addAction(context.getPackageName() + "." + ACTION_START);
- addAction(context.getPackageName() + "." + ACTION_STOP);
- }
- }
-
- class TracingBroadcastReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().endsWith(ACTION_START)) {
- String categories = intent.getStringExtra(CATEGORIES_EXTRA);
- if (TextUtils.isEmpty(categories)) {
- categories = nativeGetDefaultCategories();
- } else {
- categories = categories.replaceFirst(
- DEFAULT_CHROME_CATEGORIES_PLACE_HOLDER, nativeGetDefaultCategories());
- }
- boolean recordContinuously =
- intent.getStringExtra(RECORD_CONTINUOUSLY_EXTRA) != null;
- String filename = intent.getStringExtra(FILE_EXTRA);
- if (filename != null) {
- startTracing(filename, true, categories, recordContinuously);
- } else {
- startTracing(true, categories, recordContinuously);
- }
- } else if (intent.getAction().endsWith(ACTION_STOP)) {
- stopTracing();
- } else {
- Log.e(TAG, "Unexpected intent: " + intent);
- }
- }
- }
-
- private long mNativeTracingControllerAndroid;
- private native long nativeInit();
- private native void nativeDestroy(long nativeTracingControllerAndroid);
- private native boolean nativeStartTracing(long nativeTracingControllerAndroid, String filename,
- String categories, boolean recordContinuously);
- private native void nativeStopTracing(long nativeTracingControllerAndroid);
- private native String nativeGetDefaultCategories();
-}

Powered by Google App Engine
This is Rietveld 408576698