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

Side by Side Diff: chrome/common/mac/mock_launchd.cc

Issue 982883003: Use fixed socket name instead of SecureSocketWithKey (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed histogram Created 5 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/common/mac/mock_launchd.h" 5 #include "chrome/common/mac/mock_launchd.h"
6 6
7 #include <CoreFoundation/CoreFoundation.h> 7 #include <CoreFoundation/CoreFoundation.h>
8 #include <sys/socket.h> 8 #include <sys/socket.h>
9 #include <sys/un.h> 9 #include <sys/un.h>
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 base::ScopedCFTypeRef<CFBundleRef> bundle( 90 base::ScopedCFTypeRef<CFBundleRef> bundle(
91 CFBundleCreate(kCFAllocatorDefault, url)); 91 CFBundleCreate(kCFAllocatorDefault, url));
92 return bundle.get(); 92 return bundle.get();
93 } 93 }
94 94
95 MockLaunchd::MockLaunchd(const base::FilePath& file, 95 MockLaunchd::MockLaunchd(const base::FilePath& file,
96 base::MessageLoop* loop, 96 base::MessageLoop* loop,
97 bool create_socket, 97 bool create_socket,
98 bool as_service) 98 bool as_service)
99 : file_(file), 99 : file_(file),
100 pipe_name_(GetServiceProcessChannel().name),
100 message_loop_(loop), 101 message_loop_(loop),
101 create_socket_(create_socket), 102 create_socket_(create_socket),
102 as_service_(as_service), 103 as_service_(as_service),
103 restart_called_(false), 104 restart_called_(false),
104 remove_called_(false), 105 remove_called_(false),
105 checkin_called_(false), 106 checkin_called_(false),
106 write_called_(false), 107 write_called_(false),
107 delete_called_(false) { 108 delete_called_(false) {
108 std::string pipe_suffix("_SOCKET");
109 base::FilePath socket_path = file_;
110 while (socket_path.value().length() + pipe_suffix.length() >
111 kMaxPipeNameLength - 2) {
112 socket_path = socket_path.DirName();
113 }
114 pipe_name_ = socket_path.value() + pipe_suffix;
115 } 109 }
116 110
117 MockLaunchd::~MockLaunchd() { 111 MockLaunchd::~MockLaunchd() {
118 } 112 }
119 113
120 CFDictionaryRef MockLaunchd::CopyExports() {
121 if (!create_socket_) {
122 ADD_FAILURE();
123 return NULL;
124 }
125
126 CFStringRef env_var =
127 base::mac::NSToCFCast(GetServiceProcessLaunchDSocketEnvVar());
128 base::ScopedCFTypeRef<CFStringRef> socket_path(CFStringCreateWithCString(
129 kCFAllocatorDefault, pipe_name_.c_str(), kCFStringEncodingUTF8));
130 const void *keys[] = { env_var };
131 const void *values[] = { socket_path };
132 static_assert(arraysize(keys) == arraysize(values),
133 "keys must have the same number of elements as values");
134 return CFDictionaryCreate(kCFAllocatorDefault,
135 keys,
136 values,
137 arraysize(keys),
138 &kCFTypeDictionaryKeyCallBacks,
139 &kCFTypeDictionaryValueCallBacks);
140 }
141
142 CFDictionaryRef MockLaunchd::CopyJobDictionary(CFStringRef label) { 114 CFDictionaryRef MockLaunchd::CopyJobDictionary(CFStringRef label) {
143 if (!as_service_) { 115 if (!as_service_) {
144 scoped_ptr<MultiProcessLock> running_lock( 116 scoped_ptr<MultiProcessLock> running_lock(
145 TakeNamedLock(pipe_name_, false)); 117 TakeNamedLock(pipe_name_, false));
146 if (running_lock.get()) 118 if (running_lock.get())
147 return NULL; 119 return NULL;
148 } 120 }
149 121
150 CFStringRef program = CFSTR(LAUNCH_JOBKEY_PROGRAM); 122 CFStringRef program = CFSTR(LAUNCH_JOBKEY_PROGRAM);
151 CFStringRef program_pid = CFSTR(LAUNCH_JOBKEY_PID); 123 CFStringRef program_pid = CFSTR(LAUNCH_JOBKEY_PID);
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 Type type, 261 Type type,
290 CFStringRef name) { 262 CFStringRef name) {
291 delete_called_ = true; 263 delete_called_ = true;
292 return true; 264 return true;
293 } 265 }
294 266
295 void MockLaunchd::SignalReady() { 267 void MockLaunchd::SignalReady() {
296 ASSERT_TRUE(as_service_); 268 ASSERT_TRUE(as_service_);
297 running_lock_.reset(TakeNamedLock(pipe_name_, true)); 269 running_lock_.reset(TakeNamedLock(pipe_name_, true));
298 } 270 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698