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

Side by Side Diff: chrome/common/launchd_mac.h

Issue 6660001: Getting service process on Mac to handle having things moved/changed underneath it. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: polishing the chrome Created 9 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « chrome/chrome_common.gypi ('k') | chrome/common/launchd_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 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_LAUNCHD_MAC_H_
6 #define CHROME_COMMON_LAUNCHD_MAC_H_
7
8 #include <CoreFoundation/CoreFoundation.h>
9
10 #include "base/basictypes.h"
11 #include "base/singleton.h"
12
13 class Launchd {
14 public:
15 enum Type {
16 Agent, // LaunchAgent
17 Daemon // LaunchDaemon
18 };
19
20 // Domains map to NSSearchPathDomainMask so Foundation does not need to be
21 // included.
22 enum Domain {
23 User = 1, // ~/Library/Launch*
24 Local = 2, // /Library/Launch*
25 Network = 4, // /Network/Library/Launch*
26 System = 8 // /System/Library/Launch*
27 };
28
29 // TODO(dmaclach): Get rid of this pseudo singleton, and inject it
30 // appropriately wherever it is used.
31 // http://crbug.com/76925
32 static Launchd* GetInstance();
33
34 virtual ~Launchd();
35
36 // Return a dictionary with the launchd export settings.
37 virtual CFDictionaryRef CopyExports();
38
39 // Return a dictionary with the launchd entries for job labeled |name|.
40 virtual CFDictionaryRef CopyJobDictionary(CFStringRef label);
41
42 // Return a dictionary for launchd process.
43 virtual CFDictionaryRef CopyDictionaryByCheckingIn(CFErrorRef* error);
44
45 // Remove a launchd process from launchd.
46 virtual bool RemoveJob(CFStringRef label, CFErrorRef* error);
47
48 // Used by a process controlled by launchd to restart itself.
49 // |session_type| can be "Aqua", "LoginWindow", "Background", "StandardIO" or
50 // "System".
51 // RestartLaunchdJob starts up a separate process to tell launchd to
52 // send this process a SIGTERM. This call will return, but a SIGTERM will be
53 // received shortly.
54 virtual bool RestartJob(Domain domain,
55 Type type,
56 CFStringRef name,
57 CFStringRef session_type);
58
59 // Read a launchd plist from disk.
60 // |name| should not have an extension.
61 virtual CFMutableDictionaryRef CreatePlistFromFile(Domain domain,
62 Type type,
63 CFStringRef name);
64 // Write a launchd plist to disk.
65 // |name| should not have an extension.
66 virtual bool WritePlistToFile(Domain domain,
67 Type type,
68 CFStringRef name,
69 CFDictionaryRef dict);
70
71 // Delete a launchd plist.
72 // |name| should not have an extension.
73 virtual bool DeletePlist(Domain domain, Type type, CFStringRef name);
74
75 // TODO(dmaclach): remove this once http://crbug.com/76925 is fixed.
76 // Scaffolding for doing unittests with our singleton.
77 static void SetInstance(Launchd* instance);
78 class ScopedInstance {
79 public:
80 explicit ScopedInstance(Launchd* instance) {
81 Launchd::SetInstance(instance);
82 }
83 ~ScopedInstance() {
84 Launchd::SetInstance(NULL);
85 }
86 };
87
88 protected:
89 Launchd() { }
90
91 private:
92 // TODO(dmaclach): remove this once http://crbug.com/76925 is fixed.
93 // Scaffolding for doing unittests with our singleton.
94 friend struct DefaultSingletonTraits<Launchd>;
95 static Launchd* g_instance_;
96
97 DISALLOW_COPY_AND_ASSIGN(Launchd);
98 };
99
100 #endif // CHROME_COMMON_LAUNCHD_MAC_H_
OLDNEW
« no previous file with comments | « chrome/chrome_common.gypi ('k') | chrome/common/launchd_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698