• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
ScopedActiveURLSetter(const GURL & url)67   explicit ScopedActiveURLSetter(const GURL& url)  {
68     SetActiveURL(url);
69   }
70 
~ScopedActiveURLSetter()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