| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/child_process_host.h" | 5 #include "chrome/common/child_process_host.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" |
| 9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 host_->opening_channel_ = false; | 235 host_->opening_channel_ = false; |
| 236 host_->OnChannelError(); | 236 host_->OnChannelError(); |
| 237 | 237 |
| 238 // This will delete host_, which will also destroy this! | 238 // This will delete host_, which will also destroy this! |
| 239 host_->OnChildDied(); | 239 host_->OnChildDied(); |
| 240 } | 240 } |
| 241 | 241 |
| 242 | 242 |
| 243 ChildProcessHost::Iterator::Iterator() | 243 ChildProcessHost::Iterator::Iterator() |
| 244 : all_(true), type_(UNKNOWN_PROCESS) { | 244 : all_(true), type_(UNKNOWN_PROCESS) { |
| 245 DCHECK(MessageLoop::current() == | 245 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)) << |
| 246 ChromeThread::GetMessageLoop(ChromeThread::IO)) << | |
| 247 "ChildProcessInfo::Iterator must be used on the IO thread."; | 246 "ChildProcessInfo::Iterator must be used on the IO thread."; |
| 248 iterator_ = Singleton<ChildProcessList>::get()->begin(); | 247 iterator_ = Singleton<ChildProcessList>::get()->begin(); |
| 249 } | 248 } |
| 250 | 249 |
| 251 ChildProcessHost::Iterator::Iterator(ProcessType type) | 250 ChildProcessHost::Iterator::Iterator(ProcessType type) |
| 252 : all_(false), type_(type) { | 251 : all_(false), type_(type) { |
| 253 // IO loop can be NULL in unit tests. | 252 // IO loop can be NULL in unit tests. |
| 254 DCHECK(!ChromeThread::GetMessageLoop(ChromeThread::IO) || | 253 DCHECK(!MessageLoop::current() || |
| 255 MessageLoop::current() == | 254 ChromeThread::CurrentlyOn(ChromeThread::IO)) << |
| 256 ChromeThread::GetMessageLoop(ChromeThread::IO)) << | |
| 257 "ChildProcessInfo::Iterator must be used on the IO thread."; | 255 "ChildProcessInfo::Iterator must be used on the IO thread."; |
| 258 iterator_ = Singleton<ChildProcessList>::get()->begin(); | 256 iterator_ = Singleton<ChildProcessList>::get()->begin(); |
| 259 if (!Done() && (*iterator_)->type() != type_) | 257 if (!Done() && (*iterator_)->type() != type_) |
| 260 ++(*this); | 258 ++(*this); |
| 261 } | 259 } |
| 262 | 260 |
| 263 ChildProcessHost* ChildProcessHost::Iterator::operator++() { | 261 ChildProcessHost* ChildProcessHost::Iterator::operator++() { |
| 264 do { | 262 do { |
| 265 ++iterator_; | 263 ++iterator_; |
| 266 if (Done()) | 264 if (Done()) |
| 267 break; | 265 break; |
| 268 | 266 |
| 269 if (!all_ && (*iterator_)->type() != type_) | 267 if (!all_ && (*iterator_)->type() != type_) |
| 270 continue; | 268 continue; |
| 271 | 269 |
| 272 return *iterator_; | 270 return *iterator_; |
| 273 } while (true); | 271 } while (true); |
| 274 | 272 |
| 275 return NULL; | 273 return NULL; |
| 276 } | 274 } |
| 277 | 275 |
| 278 bool ChildProcessHost::Iterator::Done() { | 276 bool ChildProcessHost::Iterator::Done() { |
| 279 return iterator_ == Singleton<ChildProcessList>::get()->end(); | 277 return iterator_ == Singleton<ChildProcessList>::get()->end(); |
| 280 } | 278 } |
| OLD | NEW |