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

Side by Side Diff: chrome/app/breakpad_mac.mm

Issue 164433: Send browser crashes to Apple Crash Reporters. (Closed)
Patch Set: Created 11 years, 4 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 | « no previous file | 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 (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #import "chrome/app/breakpad_mac.h" 5 #import "chrome/app/breakpad_mac.h"
6 6
7 #import <Foundation/Foundation.h> 7 #import <Foundation/Foundation.h>
8 8
9 #include "base/base_switches.h" 9 #include "base/base_switches.h"
10 #import "base/basictypes.h" 10 #import "base/basictypes.h"
(...skipping 24 matching lines...) Expand all
35 } 35 }
36 } 36 }
37 37
38 // Only called for a branded build of Chrome.app. 38 // Only called for a branded build of Chrome.app.
39 void InitCrashReporter() { 39 void InitCrashReporter() {
40 DCHECK(gBreakpadRef == NULL); 40 DCHECK(gBreakpadRef == NULL);
41 base::ScopedNSAutoreleasePool autorelease_pool; 41 base::ScopedNSAutoreleasePool autorelease_pool;
42 42
43 // Check for Send stats preference. If preference is not specifically turned 43 // Check for Send stats preference. If preference is not specifically turned
44 // on then disable crash reporting. 44 // on then disable crash reporting.
45 if (!GoogleUpdateSettings::GetCollectStatsConsent()) { 45 bool user_consented = GoogleUpdateSettings::GetCollectStatsConsent();
46 if (!user_consented) {
46 LOG(WARNING) << "Breakpad disabled"; 47 LOG(WARNING) << "Breakpad disabled";
47 return; 48 return;
48 } 49 }
49 50
50 NSBundle* main_bundle = [NSBundle mainBundle]; 51 NSBundle* main_bundle = [NSBundle mainBundle];
51 NSString* resource_path = [main_bundle resourcePath]; 52 NSString* resource_path = [main_bundle resourcePath];
52 53
53 NSDictionary* info_dictionary = [main_bundle infoDictionary]; 54 NSDictionary* info_dictionary = [main_bundle infoDictionary];
54 NSMutableDictionary *breakpad_config = [info_dictionary 55 NSMutableDictionary *breakpad_config = [info_dictionary
55 mutableCopy]; 56 mutableCopy];
56 57
57 // Tell Breakpad where inspector & crash_reporter are. 58 // Tell Breakpad where inspector & crash_reporter are.
58 NSString *inspector_location = [resource_path 59 NSString *inspector_location = [resource_path
59 stringByAppendingPathComponent:@"crash_inspector"]; 60 stringByAppendingPathComponent:@"crash_inspector"];
60 NSString *reporter_bundle_location = [resource_path 61 NSString *reporter_bundle_location = [resource_path
61 stringByAppendingPathComponent:@"crash_report_sender.app"]; 62 stringByAppendingPathComponent:@"crash_report_sender.app"];
62 NSString *reporter_location = [[NSBundle 63 NSString *reporter_location = [[NSBundle
63 bundleWithPath:reporter_bundle_location] 64 bundleWithPath:reporter_bundle_location]
64 executablePath]; 65 executablePath];
65 66
66 [breakpad_config setObject:inspector_location 67 [breakpad_config setObject:inspector_location
67 forKey:@BREAKPAD_INSPECTOR_LOCATION]; 68 forKey:@BREAKPAD_INSPECTOR_LOCATION];
68 [breakpad_config setObject:reporter_location 69 [breakpad_config setObject:reporter_location
69 forKey:@BREAKPAD_REPORTER_EXE_LOCATION]; 70 forKey:@BREAKPAD_REPORTER_EXE_LOCATION];
70 71
72 // Pass crash to Crash Reporter if we're a foreground application [the
73 // browser process]. This is so the user gets notification when Chrome
74 // crashes and also since we get "restart ui" for free.
75 BOOL is_background_app = [[info_dictionary objectForKey:@"LSUIElement"]
76 isEqualToString:@"1"];
77 if (!is_background_app) {
78 [breakpad_config setObject:@"NO" forKey:@BREAKPAD_SEND_AND_EXIT];
John Grabowski 2009/08/12 22:38:25 Are you sure this is @"NO" and not [NSNumber numbe
79 }
80
71 // Init breakpad 81 // Init breakpad
72 BreakpadRef breakpad = NULL; 82 BreakpadRef breakpad = NULL;
73 breakpad = BreakpadCreate(breakpad_config); 83 breakpad = BreakpadCreate(breakpad_config);
74 if (!breakpad) { 84 if (!breakpad) {
75 LOG(ERROR) << "Breakpad init failed."; 85 LOG(ERROR) << "Breakpad init failed.";
76 return; 86 return;
77 } 87 }
78 88
79 // This needs to be set before calling SetCrashKeyValue(). 89 // This needs to be set before calling SetCrashKeyValue().
80 gBreakpadRef = breakpad; 90 gBreakpadRef = breakpad;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 void ClearCrashKeyValue(NSString* key) { 135 void ClearCrashKeyValue(NSString* key) {
126 if (gBreakpadRef == NULL) { 136 if (gBreakpadRef == NULL) {
127 return; 137 return;
128 } 138 }
129 139
130 BreakpadRemoveUploadParameter(gBreakpadRef, key); 140 BreakpadRemoveUploadParameter(gBreakpadRef, key);
131 } 141 }
132 142
133 } 143 }
134 144
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698