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

Side by Side Diff: chrome/browser/process_singleton_posix_unittest.cc

Issue 816403003: Make callers of CommandLine use it via the base:: namespace. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 6 years 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/browser/process_singleton.h" 5 #include "chrome/browser/process_singleton.h"
6 6
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <signal.h> 8 #include <signal.h>
9 #include <sys/types.h> 9 #include <sys/types.h>
10 #include <sys/un.h> 10 #include <sys/un.h>
(...skipping 28 matching lines...) Expand all
39 public: 39 public:
40 // A ProcessSingleton exposing some protected methods for testing. 40 // A ProcessSingleton exposing some protected methods for testing.
41 class TestableProcessSingleton : public ProcessSingleton { 41 class TestableProcessSingleton : public ProcessSingleton {
42 public: 42 public:
43 explicit TestableProcessSingleton(const base::FilePath& user_data_dir) 43 explicit TestableProcessSingleton(const base::FilePath& user_data_dir)
44 : ProcessSingleton( 44 : ProcessSingleton(
45 user_data_dir, 45 user_data_dir,
46 base::Bind(&TestableProcessSingleton::NotificationCallback, 46 base::Bind(&TestableProcessSingleton::NotificationCallback,
47 base::Unretained(this))) {} 47 base::Unretained(this))) {}
48 48
49 49 std::vector<base::CommandLine::StringVector> callback_command_lines_;
50 std::vector<CommandLine::StringVector> callback_command_lines_;
51 50
52 using ProcessSingleton::NotifyOtherProcessWithTimeout; 51 using ProcessSingleton::NotifyOtherProcessWithTimeout;
53 using ProcessSingleton::NotifyOtherProcessWithTimeoutOrCreate; 52 using ProcessSingleton::NotifyOtherProcessWithTimeoutOrCreate;
54 using ProcessSingleton::OverrideCurrentPidForTesting; 53 using ProcessSingleton::OverrideCurrentPidForTesting;
55 using ProcessSingleton::OverrideKillCallbackForTesting; 54 using ProcessSingleton::OverrideKillCallbackForTesting;
56 55
57 private: 56 private:
58 bool NotificationCallback(const CommandLine& command_line, 57 bool NotificationCallback(const base::CommandLine& command_line,
59 const base::FilePath& current_directory) { 58 const base::FilePath& current_directory) {
60 callback_command_lines_.push_back(command_line.argv()); 59 callback_command_lines_.push_back(command_line.argv());
61 return true; 60 return true;
62 } 61 }
63 }; 62 };
64 63
65 ProcessSingletonPosixTest() 64 ProcessSingletonPosixTest()
66 : kill_callbacks_(0), 65 : kill_callbacks_(0),
67 io_thread_(BrowserThread::IO), 66 io_thread_(BrowserThread::IO),
68 wait_event_(true, false), 67 wait_event_(true, false),
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 base::FilePath remote_cookie_path = socket_target_path.DirName(). 155 base::FilePath remote_cookie_path = socket_target_path.DirName().
157 Append(chrome::kSingletonCookieFilename); 156 Append(chrome::kSingletonCookieFilename);
158 len = readlink(remote_cookie_path.value().c_str(), buf, PATH_MAX); 157 len = readlink(remote_cookie_path.value().c_str(), buf, PATH_MAX);
159 ASSERT_GT(len, 0); 158 ASSERT_GT(len, 0);
160 EXPECT_EQ(cookie, std::string(buf, len)); 159 EXPECT_EQ(cookie, std::string(buf, len));
161 } 160 }
162 161
163 ProcessSingleton::NotifyResult NotifyOtherProcess(bool override_kill) { 162 ProcessSingleton::NotifyResult NotifyOtherProcess(bool override_kill) {
164 scoped_ptr<TestableProcessSingleton> process_singleton( 163 scoped_ptr<TestableProcessSingleton> process_singleton(
165 CreateProcessSingleton()); 164 CreateProcessSingleton());
166 CommandLine command_line(CommandLine::ForCurrentProcess()->GetProgram()); 165 base::CommandLine command_line(
166 base::CommandLine::ForCurrentProcess()->GetProgram());
167 command_line.AppendArg("about:blank"); 167 command_line.AppendArg("about:blank");
168 if (override_kill) { 168 if (override_kill) {
169 process_singleton->OverrideCurrentPidForTesting( 169 process_singleton->OverrideCurrentPidForTesting(
170 base::GetCurrentProcId() + 1); 170 base::GetCurrentProcId() + 1);
171 process_singleton->OverrideKillCallbackForTesting( 171 process_singleton->OverrideKillCallbackForTesting(
172 base::Bind(&ProcessSingletonPosixTest::KillCallback, 172 base::Bind(&ProcessSingletonPosixTest::KillCallback,
173 base::Unretained(this))); 173 base::Unretained(this)));
174 } 174 }
175 175
176 return process_singleton->NotifyOtherProcessWithTimeout( 176 return process_singleton->NotifyOtherProcessWithTimeout(
177 command_line, kRetryAttempts, timeout(), true); 177 command_line, kRetryAttempts, timeout(), true);
178 } 178 }
179 179
180 // A helper method to call ProcessSingleton::NotifyOtherProcessOrCreate(). 180 // A helper method to call ProcessSingleton::NotifyOtherProcessOrCreate().
181 ProcessSingleton::NotifyResult NotifyOtherProcessOrCreate( 181 ProcessSingleton::NotifyResult NotifyOtherProcessOrCreate(
182 const std::string& url) { 182 const std::string& url) {
183 scoped_ptr<TestableProcessSingleton> process_singleton( 183 scoped_ptr<TestableProcessSingleton> process_singleton(
184 CreateProcessSingleton()); 184 CreateProcessSingleton());
185 CommandLine command_line(CommandLine::ForCurrentProcess()->GetProgram()); 185 base::CommandLine command_line(
186 base::CommandLine::ForCurrentProcess()->GetProgram());
186 command_line.AppendArg(url); 187 command_line.AppendArg(url);
187 return process_singleton->NotifyOtherProcessWithTimeoutOrCreate( 188 return process_singleton->NotifyOtherProcessWithTimeoutOrCreate(
188 command_line, kRetryAttempts, timeout()); 189 command_line, kRetryAttempts, timeout());
189 } 190 }
190 191
191 void CheckNotified() { 192 void CheckNotified() {
192 ASSERT_TRUE(process_singleton_on_thread_ != NULL); 193 ASSERT_TRUE(process_singleton_on_thread_ != NULL);
193 ASSERT_EQ(1u, process_singleton_on_thread_->callback_command_lines_.size()); 194 ASSERT_EQ(1u, process_singleton_on_thread_->callback_command_lines_.size());
194 bool found = false; 195 bool found = false;
195 for (size_t i = 0; 196 for (size_t i = 0;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 // Test that if there is an existing lock file, and it's not locked, we replace 421 // Test that if there is an existing lock file, and it's not locked, we replace
421 // it. 422 // it.
422 TEST_F(ProcessSingletonPosixTest, CreateReplacesOldMacLock) { 423 TEST_F(ProcessSingletonPosixTest, CreateReplacesOldMacLock) {
423 scoped_ptr<TestableProcessSingleton> process_singleton( 424 scoped_ptr<TestableProcessSingleton> process_singleton(
424 CreateProcessSingleton()); 425 CreateProcessSingleton());
425 EXPECT_EQ(0, base::WriteFile(lock_path_, "", 0)); 426 EXPECT_EQ(0, base::WriteFile(lock_path_, "", 0));
426 EXPECT_TRUE(process_singleton->Create()); 427 EXPECT_TRUE(process_singleton->Create());
427 VerifyFiles(); 428 VerifyFiles();
428 } 429 }
429 #endif // defined(OS_MACOSX) 430 #endif // defined(OS_MACOSX)
OLDNEW
« no previous file with comments | « chrome/browser/process_singleton_posix.cc ('k') | chrome/browser/process_singleton_startup_lock.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698