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

Side by Side Diff: extensions/browser/serial_extension_host_queue.cc

Issue 955713004: Merge 317853 - Make BackgroundContentsService start up BackgroundContents with a delay, as for Exte… (Closed) Base URL: https://chromium.googlesource.com/chromium/src@2311
Patch Set: 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
« no previous file with comments | « extensions/browser/serial_extension_host_queue.h ('k') | extensions/extensions.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "extensions/browser/serial_extension_host_queue.h" 5 #include "extensions/browser/serial_extension_host_queue.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "extensions/browser/extension_host.h" 9 #include "extensions/browser/deferred_start_render_host.h"
10 10
11 namespace extensions { 11 namespace extensions {
12 12
13 SerialExtensionHostQueue::SerialExtensionHostQueue() 13 SerialExtensionHostQueue::SerialExtensionHostQueue()
14 : pending_create_(false), ptr_factory_(this) { 14 : pending_create_(false), ptr_factory_(this) {
15 } 15 }
16 16
17 SerialExtensionHostQueue::~SerialExtensionHostQueue() { 17 SerialExtensionHostQueue::~SerialExtensionHostQueue() {
18 } 18 }
19 19
20 void SerialExtensionHostQueue::Add(ExtensionHost* host) { 20 void SerialExtensionHostQueue::Add(DeferredStartRenderHost* host) {
21 queue_.push_back(host); 21 queue_.push_back(host);
22 PostTask(); 22 PostTask();
23 } 23 }
24 24
25 void SerialExtensionHostQueue::Remove(ExtensionHost* host) { 25 void SerialExtensionHostQueue::Remove(DeferredStartRenderHost* host) {
26 std::list<ExtensionHost*>::iterator it = 26 std::list<DeferredStartRenderHost*>::iterator it =
27 std::find(queue_.begin(), queue_.end(), host); 27 std::find(queue_.begin(), queue_.end(), host);
28 if (it != queue_.end()) 28 if (it != queue_.end())
29 queue_.erase(it); 29 queue_.erase(it);
30 } 30 }
31 31
32 void SerialExtensionHostQueue::PostTask() { 32 void SerialExtensionHostQueue::PostTask() {
33 if (!pending_create_) { 33 if (!pending_create_) {
34 base::MessageLoop::current()->PostTask( 34 base::MessageLoop::current()->PostTask(
35 FROM_HERE, base::Bind(&SerialExtensionHostQueue::ProcessOneHost, 35 FROM_HERE, base::Bind(&SerialExtensionHostQueue::ProcessOneHost,
36 ptr_factory_.GetWeakPtr())); 36 ptr_factory_.GetWeakPtr()));
37 pending_create_ = true; 37 pending_create_ = true;
38 } 38 }
39 } 39 }
40 40
41 void SerialExtensionHostQueue::ProcessOneHost() { 41 void SerialExtensionHostQueue::ProcessOneHost() {
42 pending_create_ = false; 42 pending_create_ = false;
43 if (queue_.empty()) 43 if (queue_.empty())
44 return; // can happen on shutdown 44 return; // can happen on shutdown
45 45
46 queue_.front()->CreateRenderViewNow(); 46 queue_.front()->CreateRenderViewNow();
47 queue_.pop_front(); 47 queue_.pop_front();
48 48
49 if (!queue_.empty()) 49 if (!queue_.empty())
50 PostTask(); 50 PostTask();
51 } 51 }
52 52
53 } // namespace extensions 53 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/serial_extension_host_queue.h ('k') | extensions/extensions.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698