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

Side by Side Diff: chromecast/crash/android/crash_handler.cc

Issue 1176003005: Chromecast: Android crash startup can't read path from /data/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: privileged flag --> process_type Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « chromecast/crash/android/crash_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chromecast/crash/android/crash_handler.h" 5 #include "chromecast/crash/android/crash_handler.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 #include <string> 9 #include <string>
10 10
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 } 50 }
51 51
52 } // namespace 52 } // namespace
53 53
54 namespace chromecast { 54 namespace chromecast {
55 55
56 // static 56 // static
57 void CrashHandler::Initialize(const std::string& process_type, 57 void CrashHandler::Initialize(const std::string& process_type,
58 const base::FilePath& log_file_path) { 58 const base::FilePath& log_file_path) {
59 DCHECK(!g_crash_handler); 59 DCHECK(!g_crash_handler);
60 g_crash_handler = new CrashHandler(log_file_path); 60 g_crash_handler = new CrashHandler(process_type, log_file_path);
61 g_crash_handler->Initialize(process_type); 61 g_crash_handler->Initialize();
62 } 62 }
63 63
64 // static 64 // static
65 bool CrashHandler::GetCrashDumpLocation(base::FilePath* crash_dir) { 65 bool CrashHandler::GetCrashDumpLocation(base::FilePath* crash_dir) {
66 DCHECK(g_crash_handler); 66 DCHECK(g_crash_handler);
67 return g_crash_handler->crash_reporter_client_-> 67 return g_crash_handler->crash_reporter_client_->
68 GetCrashDumpLocation(crash_dir); 68 GetCrashDumpLocation(crash_dir);
69 } 69 }
70 70
71 // static 71 // static
72 bool CrashHandler::RegisterCastCrashJni(JNIEnv* env) { 72 bool CrashHandler::RegisterCastCrashJni(JNIEnv* env) {
73 return RegisterNativesImpl(env); 73 return RegisterNativesImpl(env);
74 } 74 }
75 75
76 CrashHandler::CrashHandler(const base::FilePath& log_file_path) 76 CrashHandler::CrashHandler(const std::string& process_type,
77 const base::FilePath& log_file_path)
77 : log_file_path_(log_file_path), 78 : log_file_path_(log_file_path),
78 crash_reporter_client_(new CastCrashReporterClientAndroid) { 79 process_type_(process_type),
80 crash_reporter_client_(new CastCrashReporterClientAndroid(process_type)) {
79 if (!crash_reporter_client_->GetCrashDumpLocation(&crash_dump_path_)) { 81 if (!crash_reporter_client_->GetCrashDumpLocation(&crash_dump_path_)) {
80 LOG(ERROR) << "Could not get crash dump location"; 82 LOG(ERROR) << "Could not get crash dump location";
81 } 83 }
82 SetCrashReporterClient(crash_reporter_client_.get()); 84 SetCrashReporterClient(crash_reporter_client_.get());
83 } 85 }
84 86
85 CrashHandler::~CrashHandler() { 87 CrashHandler::~CrashHandler() {
86 DCHECK(g_crash_handler); 88 DCHECK(g_crash_handler);
87 g_crash_handler = NULL; 89 g_crash_handler = NULL;
88 } 90 }
89 91
90 void CrashHandler::Initialize(const std::string& process_type) { 92 void CrashHandler::Initialize() {
91 if (process_type.empty()) { 93 if (process_type_.empty()) {
92 InitializeUploader(); 94 InitializeUploader();
93 95
94 // ExceptionHandlers are called on crash in reverse order of 96 // ExceptionHandlers are called on crash in reverse order of
95 // instantiation. This ExceptionHandler will attempt to upload crashes 97 // instantiation. This ExceptionHandler will attempt to upload crashes
96 // and the log file written out by the main process. 98 // and the log file written out by the main process.
97 99
98 // Dummy MinidumpDescriptor just to start up another ExceptionHandler. 100 // Dummy MinidumpDescriptor just to start up another ExceptionHandler.
99 google_breakpad::MinidumpDescriptor dummy(crash_dump_path_.value()); 101 google_breakpad::MinidumpDescriptor dummy(crash_dump_path_.value());
100 crash_uploader_.reset(new google_breakpad::ExceptionHandler( 102 crash_uploader_.reset(new google_breakpad::ExceptionHandler(
101 dummy, &HandleCrash, NULL, NULL, true, -1)); 103 dummy, &HandleCrash, NULL, NULL, true, -1));
102 104
103 breakpad::InitCrashReporter(process_type); 105 breakpad::InitCrashReporter(process_type_);
104 106
105 return; 107 return;
106 } 108 }
107 109
108 if (process_type != switches::kZygoteProcess) { 110 if (process_type_ != switches::kZygoteProcess) {
109 breakpad::InitNonBrowserCrashReporterForAndroid(process_type); 111 breakpad::InitNonBrowserCrashReporterForAndroid(process_type_);
110 } 112 }
111 } 113 }
112 114
113 void CrashHandler::InitializeUploader() { 115 void CrashHandler::InitializeUploader() {
114 JNIEnv* env = base::android::AttachCurrentThread(); 116 JNIEnv* env = base::android::AttachCurrentThread();
115 base::android::ScopedJavaLocalRef<jstring> crash_dump_path_java = 117 base::android::ScopedJavaLocalRef<jstring> crash_dump_path_java =
116 base::android::ConvertUTF8ToJavaString(env, 118 base::android::ConvertUTF8ToJavaString(env,
117 crash_dump_path_.value()); 119 crash_dump_path_.value());
118 Java_CastCrashHandler_initializeUploader( 120 Java_CastCrashHandler_initializeUploader(
119 env, crash_dump_path_java.obj(), UploadCrashToStaging()); 121 env, crash_dump_path_java.obj(), UploadCrashToStaging());
(...skipping 14 matching lines...) Expand all
134 base::android::ConvertUTF8ToJavaString(env, log_file_path_.value()); 136 base::android::ConvertUTF8ToJavaString(env, log_file_path_.value());
135 Java_CastCrashHandler_uploadCrashDumps(env, log_file_path_java.obj()); 137 Java_CastCrashHandler_uploadCrashDumps(env, log_file_path_java.obj());
136 } else { 138 } else {
137 VLOG(1) << "Removing crash dumps instead of uploading"; 139 VLOG(1) << "Removing crash dumps instead of uploading";
138 JNIEnv* env = base::android::AttachCurrentThread(); 140 JNIEnv* env = base::android::AttachCurrentThread();
139 Java_CastCrashHandler_removeCrashDumps(env); 141 Java_CastCrashHandler_removeCrashDumps(env);
140 } 142 }
141 } 143 }
142 144
143 } // namespace chromecast 145 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/crash/android/crash_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698