Commit 0d185747 authored by Tibor Goldschwendt's avatar Tibor Goldschwendt Committed by Commit Bot

[crash report] Move CrashKeys to components for use in other components

Move CrashKeys class to //components/crash so that other components can
make use of it. This CL is a precursor for adding the installed feature
modules to crash reports.

Bug: 873719
Change-Id: I68d51a50cc9f239a94171ab7afec19b78224c53e
Reviewed-on: https://chromium-review.googlesource.com/c/1349729
Commit-Queue: Tibor Goldschwendt <tiborg@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarCait Phillips <caitkp@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611494}
parent 33845c06
...@@ -423,7 +423,6 @@ action("chrome_android_java_google_api_keys_srcjar") { ...@@ -423,7 +423,6 @@ action("chrome_android_java_google_api_keys_srcjar") {
java_cpp_enum("chrome_android_java_enums_srcjar") { java_cpp_enum("chrome_android_java_enums_srcjar") {
sources = [ sources = [
"//chrome/browser/android/crash/crash_keys_android.h",
"//chrome/browser/android/customtabs/detached_resource_request.h", "//chrome/browser/android/customtabs/detached_resource_request.h",
"//chrome/browser/android/digital_asset_links/digital_asset_links_handler.h", "//chrome/browser/android/digital_asset_links/digital_asset_links_handler.h",
"//chrome/browser/android/explore_sites/explore_sites_feature.h", "//chrome/browser/android/explore_sites/explore_sites_feature.h",
...@@ -646,6 +645,7 @@ android_library("chrome_test_java") { ...@@ -646,6 +645,7 @@ android_library("chrome_test_java") {
"//components/background_task_scheduler:background_task_scheduler_javatests", "//components/background_task_scheduler:background_task_scheduler_javatests",
"//components/background_task_scheduler:background_task_scheduler_task_ids_java", "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
"//components/bookmarks/common/android:bookmarks_java", "//components/bookmarks/common/android:bookmarks_java",
"//components/crash/android:java",
"//components/crash/android:javatests", "//components/crash/android:javatests",
"//components/dom_distiller/core/android:dom_distiller_core_java", "//components/dom_distiller/core/android:dom_distiller_core_java",
"//components/download/internal/background_service:internal_java", "//components/download/internal/background_service:internal_java",
...@@ -1099,6 +1099,7 @@ chrome_shared_library("libchromefortest") { ...@@ -1099,6 +1099,7 @@ chrome_shared_library("libchromefortest") {
"//base/test:test_support", "//base/test:test_support",
"//chrome:chrome_android_core", "//chrome:chrome_android_core",
"//chrome/browser/android/metrics:ukm_utils_for_test", "//chrome/browser/android/metrics:ukm_utils_for_test",
"//components/crash/android:crash_android",
"//components/heap_profiling:test_support", "//components/heap_profiling:test_support",
"//components/minidump_uploader", "//components/minidump_uploader",
"//components/sync", "//components/sync",
......
...@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.crash; ...@@ -7,6 +7,8 @@ package org.chromium.chrome.browser.crash;
import org.chromium.base.ApplicationState; import org.chromium.base.ApplicationState;
import org.chromium.base.ApplicationStatus; import org.chromium.base.ApplicationStatus;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.components.crash.CrashKeyIndex;
import org.chromium.components.crash.CrashKeys;
/** /**
* This class updates crash keys when the application state changes. * This class updates crash keys when the application state changes.
......
...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.crash; ...@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.crash;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.MainDex; import org.chromium.base.annotations.MainDex;
import org.chromium.components.crash.CrashKeys;
/** /**
* This UncaughtExceptionHandler will upload the stacktrace when there is an uncaught exception. * This UncaughtExceptionHandler will upload the stacktrace when there is an uncaught exception.
......
...@@ -20,6 +20,7 @@ import org.chromium.base.StrictModeContext; ...@@ -20,6 +20,7 @@ import org.chromium.base.StrictModeContext;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.MainDex; import org.chromium.base.annotations.MainDex;
import org.chromium.chrome.browser.ChromeVersionInfo; import org.chromium.chrome.browser.ChromeVersionInfo;
import org.chromium.components.crash.CrashKeys;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
......
...@@ -22,9 +22,9 @@ import org.chromium.base.VisibleForTesting; ...@@ -22,9 +22,9 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.task.AsyncTask; import org.chromium.base.task.AsyncTask;
import org.chromium.chrome.browser.ChromeApplication; import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.crash.CrashKeyIndex;
import org.chromium.chrome.browser.crash.CrashKeys;
import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics.DestructionReason; import org.chromium.chrome.browser.customtabs.dynamicmodule.ModuleMetrics.DestructionReason;
import org.chromium.components.crash.CrashKeyIndex;
import org.chromium.components.crash.CrashKeys;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
......
...@@ -404,7 +404,6 @@ chrome_java_sources = [ ...@@ -404,7 +404,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/crash/ApplicationStatusTracker.java", "java/src/org/chromium/chrome/browser/crash/ApplicationStatusTracker.java",
"java/src/org/chromium/chrome/browser/crash/ChromeMinidumpUploadJobService.java", "java/src/org/chromium/chrome/browser/crash/ChromeMinidumpUploadJobService.java",
"java/src/org/chromium/chrome/browser/crash/ChromeMinidumpUploaderDelegate.java", "java/src/org/chromium/chrome/browser/crash/ChromeMinidumpUploaderDelegate.java",
"java/src/org/chromium/chrome/browser/crash/CrashKeys.java",
"java/src/org/chromium/chrome/browser/crash/LogcatExtractionRunnable.java", "java/src/org/chromium/chrome/browser/crash/LogcatExtractionRunnable.java",
"java/src/org/chromium/chrome/browser/crash/MinidumpLogcatPrepender.java", "java/src/org/chromium/chrome/browser/crash/MinidumpLogcatPrepender.java",
"java/src/org/chromium/chrome/browser/crash/MinidumpUploadRetry.java", "java/src/org/chromium/chrome/browser/crash/MinidumpUploadRetry.java",
......
...@@ -3,6 +3,7 @@ include_rules = [ ...@@ -3,6 +3,7 @@ include_rules = [
"+components/autofill/android/java/src/org/chromium/components/autofill", "+components/autofill/android/java/src/org/chromium/components/autofill",
"+components/background_task_scheduler/android/java", "+components/background_task_scheduler/android/java",
"+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks", "+components/bookmarks/common/android/java/src/org/chromium/components/bookmarks",
"+components/crash/android",
"+components/embedder_support/android", "+components/embedder_support/android",
"+components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement", "+components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement",
"+components/dom_distiller/core/android/java/src/org/chromium/components/dom_distiller/core", "+components/dom_distiller/core/android/java/src/org/chromium/components/dom_distiller/core",
......
...@@ -13,6 +13,8 @@ import org.junit.runner.RunWith; ...@@ -13,6 +13,8 @@ import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.test.BaseJUnit4ClassRunner; import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.components.crash.CrashKeyIndex;
import org.chromium.components.crash.CrashKeys;
import org.chromium.components.minidump_uploader.CrashTestRule; import org.chromium.components.minidump_uploader.CrashTestRule;
import java.io.BufferedReader; import java.io.BufferedReader;
......
...@@ -2114,8 +2114,6 @@ jumbo_split_static_library("browser") { ...@@ -2114,8 +2114,6 @@ jumbo_split_static_library("browser") {
"android/contextualsearch/unhandled_tap_web_contents_observer.cc", "android/contextualsearch/unhandled_tap_web_contents_observer.cc",
"android/contextualsearch/unhandled_tap_web_contents_observer.h", "android/contextualsearch/unhandled_tap_web_contents_observer.h",
"android/cookies/cookies_fetcher_util.cc", "android/cookies/cookies_fetcher_util.cc",
"android/crash/crash_keys_android.cc",
"android/crash/crash_keys_android.h",
"android/crash/pure_java_exception_handler.cc", "android/crash/pure_java_exception_handler.cc",
"android/crash/pure_java_exception_handler.h", "android/crash/pure_java_exception_handler.h",
"android/customtabs/detached_resource_request.cc", "android/customtabs/detached_resource_request.cc",
...@@ -2557,6 +2555,7 @@ jumbo_split_static_library("browser") { ...@@ -2557,6 +2555,7 @@ jumbo_split_static_library("browser") {
"//chrome/services/media_gallery_util/public/cpp", "//chrome/services/media_gallery_util/public/cpp",
"//components/autofill_assistant/browser", "//components/autofill_assistant/browser",
"//components/cdm/browser", "//components/cdm/browser",
"//components/crash/android:crash_android",
"//components/embedder_support/android:web_contents_delegate", "//components/embedder_support/android:web_contents_delegate",
"//components/feed:buildflags", "//components/feed:buildflags",
"//components/feed:feature_list", "//components/feed:feature_list",
...@@ -4687,7 +4686,6 @@ if (is_android) { ...@@ -4687,7 +4686,6 @@ if (is_android) {
"../android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper.java", "../android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper.java",
"../android/java/src/org/chromium/chrome/browser/contextualsearch/CtrSuppression.java", "../android/java/src/org/chromium/chrome/browser/contextualsearch/CtrSuppression.java",
"../android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java", "../android/java/src/org/chromium/chrome/browser/cookies/CookiesFetcher.java",
"../android/java/src/org/chromium/chrome/browser/crash/CrashKeys.java",
"../android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadService.java", "../android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadService.java",
"../android/java/src/org/chromium/chrome/browser/crash/PureJavaExceptionHandler.java", "../android/java/src/org/chromium/chrome/browser/crash/PureJavaExceptionHandler.java",
"../android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java", "../android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java",
......
...@@ -2356,7 +2356,6 @@ test("unit_tests") { ...@@ -2356,7 +2356,6 @@ test("unit_tests") {
# TODO(newt): move this to test_support_unit? # TODO(newt): move this to test_support_unit?
"../browser/android/chrome_backup_agent_unittest.cc", "../browser/android/chrome_backup_agent_unittest.cc",
"../browser/android/crash/crash_keys_android_unittest.cc",
"../browser/android/customtabs/detached_resource_request_unittest.cc", "../browser/android/customtabs/detached_resource_request_unittest.cc",
"../browser/android/favicon_helper_unittest.cc", "../browser/android/favicon_helper_unittest.cc",
"../browser/android/mock_location_settings.cc", "../browser/android/mock_location_settings.cc",
......
...@@ -279,6 +279,8 @@ test("components_unittests") { ...@@ -279,6 +279,8 @@ test("components_unittests") {
"//base:base_java_unittest_support", "//base:base_java_unittest_support",
"//components/autofill_assistant/browser:unit_tests", "//components/autofill_assistant/browser:unit_tests",
"//components/cdm/browser:unit_tests", "//components/cdm/browser:unit_tests",
"//components/crash/android:java",
"//components/crash/android:unit_tests",
"//components/gcm_driver/instance_id:test_support", "//components/gcm_driver/instance_id:test_support",
"//components/gcm_driver/instance_id/android:instance_id_driver_java", "//components/gcm_driver/instance_id/android:instance_id_driver_java",
"//components/gcm_driver/instance_id/android:instance_id_driver_test_support_java", "//components/gcm_driver/instance_id/android:instance_id_driver_test_support_java",
......
...@@ -4,22 +4,43 @@ ...@@ -4,22 +4,43 @@
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
_jni_sources = _jni_sources = [
[ "java/src/org/chromium/components/crash/browser/ChildProcessCrashObserver.java", "java/src/org/chromium/components/crash/browser/ChildProcessCrashObserver.java",
"java/src/org/chromium/components/crash/browser/CrashDumpManager.java" ] "java/src/org/chromium/components/crash/browser/CrashDumpManager.java",
"java/src/org/chromium/components/crash/CrashKeys.java",
]
generate_jni("jni_headers") { generate_jni("jni_headers") {
sources = _jni_sources sources = _jni_sources
jni_package = "crash" jni_package = "crash"
} }
java_cpp_enum("java_enums_srcjar") {
sources = [
"crash_keys_android.h",
]
}
android_library("java") { android_library("java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
] ]
srcjar_deps = [ ":java_enums_srcjar" ]
java_files = _jni_sources java_files = _jni_sources
} }
source_set("crash_android") {
sources = [
"crash_keys_android.cc",
"crash_keys_android.h",
]
deps = [
":jni_headers",
"//base",
"//components/crash/core/common:crash_key",
]
}
android_library("javatests") { android_library("javatests") {
testonly = true testonly = true
deps = [ deps = [
...@@ -31,3 +52,15 @@ android_library("javatests") { ...@@ -31,3 +52,15 @@ android_library("javatests") {
] ]
java_files = [ "javatests/src/org/chromium/components/crash/browser/CrashDumpManagerTest.java" ] java_files = [ "javatests/src/org/chromium/components/crash/browser/CrashDumpManagerTest.java" ]
} }
source_set("unit_tests") {
testonly = true
sources = [
"crash_keys_android_unittest.cc",
]
deps = [
":crash_android",
"//components/crash/core/common:crash_key",
"//testing/gtest",
]
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/android/crash/crash_keys_android.h" #include "components/crash/android/crash_keys_android.h"
#include "base/android/jni_android.h" #include "base/android/jni_android.h"
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_ANDROID_CRASH_CRASH_KEYS_ANDROID_H_ #ifndef COMPONENTS_CRASH_ANDROID_CRASH_KEYS_ANDROID_H_
#define CHROME_BROWSER_ANDROID_CRASH_CRASH_KEYS_ANDROID_H_ #define COMPONENTS_CRASH_ANDROID_CRASH_KEYS_ANDROID_H_
#include <string> #include <string>
// See CrashKeys.java for how to add a new crash key. // See CrashKeys.java for how to add a new crash key.
// A Java counterpart will be generated for this enum. // A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.crash // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.crash
enum class CrashKeyIndex { enum class CrashKeyIndex {
LOADED_DYNAMIC_MODULE = 0, LOADED_DYNAMIC_MODULE = 0,
ACTIVE_DYNAMIC_MODULE, ACTIVE_DYNAMIC_MODULE,
...@@ -23,4 +23,4 @@ void SetAndroidCrashKey(CrashKeyIndex index, const std::string& value); ...@@ -23,4 +23,4 @@ void SetAndroidCrashKey(CrashKeyIndex index, const std::string& value);
void ClearAndroidCrashKey(CrashKeyIndex index); void ClearAndroidCrashKey(CrashKeyIndex index);
void FlushAndroidCrashKeys(); void FlushAndroidCrashKeys();
#endif // CHROME_BROWSER_ANDROID_CRASH_CRASH_KEYS_ANDROID_H_ #endif // COMPONENTS_CRASH_ANDROID_CRASH_KEYS_ANDROID_H_
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/android/crash/crash_keys_android.h" #include "components/crash/android/crash_keys_android.h"
#include "components/crash/core/common/crash_key.h" #include "components/crash/core/common/crash_key.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.crash; package org.chromium.components.crash;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
...@@ -19,6 +19,7 @@ import java.util.concurrent.atomic.AtomicReferenceArray; ...@@ -19,6 +19,7 @@ import java.util.concurrent.atomic.AtomicReferenceArray;
* <li>The CrashKeyString array in {@code crash_keys_android.cc}</li> * <li>The CrashKeyString array in {@code crash_keys_android.cc}</li>
* <li>The {@link #KEYS} array in this class.</li> * <li>The {@link #KEYS} array in this class.</li>
* </ol> * </ol>
* The crash keys will only be included in browser process crash reports.
*/ */
public class CrashKeys { public class CrashKeys {
private static final String[] KEYS = private static final String[] KEYS =
...@@ -47,7 +48,7 @@ public class CrashKeys { ...@@ -47,7 +48,7 @@ public class CrashKeys {
* @param keyIndex The index of a crash key. * @param keyIndex The index of a crash key.
* @return The key for the given index. * @return The key for the given index.
*/ */
static String getKey(@CrashKeyIndex int keyIndex) { public static String getKey(@CrashKeyIndex int keyIndex) {
return KEYS[keyIndex]; return KEYS[keyIndex];
} }
...@@ -56,7 +57,7 @@ public class CrashKeys { ...@@ -56,7 +57,7 @@ public class CrashKeys {
* the values have been flushed to the native side. * the values have been flushed to the native side.
* @see #flushToNative * @see #flushToNative
*/ */
AtomicReferenceArray<String> getValues() { public AtomicReferenceArray<String> getValues() {
assert !mFlushed; assert !mFlushed;
return mValues; return mValues;
} }
...@@ -75,7 +76,6 @@ public class CrashKeys { ...@@ -75,7 +76,6 @@ public class CrashKeys {
nativeSet(keyIndex, value); nativeSet(keyIndex, value);
return; return;
} }
mValues.set(keyIndex, value); mValues.set(keyIndex, value);
} }
...@@ -84,7 +84,7 @@ public class CrashKeys { ...@@ -84,7 +84,7 @@ public class CrashKeys {
* pure-Java exception handling is disabled in favor of native crash reporting. * pure-Java exception handling is disabled in favor of native crash reporting.
*/ */
@CalledByNative @CalledByNative
void flushToNative() { public void flushToNative() {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
assert !mFlushed; assert !mFlushed;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment