1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_COMMON_CHILD_PROCESS_LOGGING_H_ 6 #define CHROME_COMMON_CHILD_PROCESS_LOGGING_H_ 7 #pragma once 8 9 #include <set> 10 #include <string> 11 12 #include "base/basictypes.h" 13 #include "googleurl/src/gurl.h" 14 15 struct GPUInfo; 16 17 #if defined(OS_WIN) || defined(OS_MACOSX) 18 // The maximum number of active extensions we will report. 19 // Also used in chrome/app, but we define it here to avoid a common->app 20 // dependency. 21 static const int kMaxReportedActiveExtensions = 10; 22 #endif 23 24 namespace child_process_logging { 25 26 #if defined(OS_LINUX) 27 // These are declared here so the crash reporter can access them directly in 28 // compromised context without going through the standard library. 29 extern char g_active_url[]; 30 extern char g_client_id[]; 31 extern char g_gpu_vendor_id[]; 32 extern char g_gpu_device_id[]; 33 extern char g_gpu_driver_ver[]; 34 extern char g_gpu_ps_ver[]; 35 extern char g_gpu_vs_ver[]; 36 #endif 37 38 // Sets the URL that is logged if the child process crashes. Use GURL() to clear 39 // the URL. 40 void SetActiveURL(const GURL& url); 41 42 // Sets the Client ID that is used as GUID if a Chrome process crashes. 43 void SetClientId(const std::string& client_id); 44 45 // Gets the Client ID to be used as GUID for crash reporting. Returns the client 46 // id in |client_id| if it's known, an empty string otherwise. 47 std::string GetClientId(); 48 49 // Sets the list of "active" extensions in this process. We overload "active" to 50 // mean different things depending on the process type: 51 // - browser: all enabled extensions 52 // - renderer: the unique set of extension ids from all content scripts 53 // - extension: the id of each extension running in this process (there can be 54 // multiple because of process collapsing). 55 void SetActiveExtensions(const std::set<std::string>& extension_ids); 56 57 // Sets a number of views/tabs opened in this process. 58 void SetNumberOfViews(int number_of_views); 59 60 // Sets the data on the gpu to send along with crash reports. 61 void SetGpuInfo(const GPUInfo& gpu_info); 62 63 // Simple wrapper class that sets the active URL in it's constructor and clears 64 // the active URL in the destructor. 65 class ScopedActiveURLSetter { 66 public: 67 explicit ScopedActiveURLSetter(const GURL& url) { 68 SetActiveURL(url); 69 } 70 71 ~ScopedActiveURLSetter() { 72 SetActiveURL(GURL()); 73 } 74 75 private: 76 DISALLOW_COPY_AND_ASSIGN(ScopedActiveURLSetter); 77 }; 78 79 } // namespace child_process_logging 80 81 #if defined(OS_MACOSX) && __OBJC__ 82 83 @class NSString; 84 85 typedef void (*SetCrashKeyValueFuncPtr)(NSString*, NSString*); 86 typedef void (*ClearCrashKeyValueFuncPtr)(NSString*); 87 88 namespace child_process_logging { 89 void SetCrashKeyFunctions(SetCrashKeyValueFuncPtr set_key_func, 90 ClearCrashKeyValueFuncPtr clear_key_func); 91 void SetActiveURLImpl(const GURL& url, 92 SetCrashKeyValueFuncPtr set_key_func, 93 ClearCrashKeyValueFuncPtr clear_key_func); 94 95 extern const int kMaxNumCrashURLChunks; 96 extern const int kMaxNumURLChunkValueLength; 97 extern const char *kUrlChunkFormatStr; 98 } // namespace child_process_logging 99 100 #endif // defined(OS_MACOSX) && __OBJC__ 101 102 #endif // CHROME_COMMON_CHILD_PROCESS_LOGGING_H_ 103