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

Side by Side Diff: chrome/test/chromedriver/net/sync_websocket_impl.cc

Issue 12321057: [chromedriver] Implement reconnection to DevTools. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix some nits and add one unit test. Created 7 years, 10 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
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/test/chromedriver/net/sync_websocket_impl.h" 5 #include "chrome/test/chromedriver/net/sync_websocket_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 19 matching lines...) Expand all
30 bool SyncWebSocketImpl::ReceiveNextMessage(std::string* message) { 30 bool SyncWebSocketImpl::ReceiveNextMessage(std::string* message) {
31 return core_->ReceiveNextMessage(message); 31 return core_->ReceiveNextMessage(message);
32 } 32 }
33 33
34 bool SyncWebSocketImpl::HasNextMessage() { 34 bool SyncWebSocketImpl::HasNextMessage() {
35 return core_->HasNextMessage(); 35 return core_->HasNextMessage();
36 } 36 }
37 37
38 SyncWebSocketImpl::Core::Core(net::URLRequestContextGetter* context_getter) 38 SyncWebSocketImpl::Core::Core(net::URLRequestContextGetter* context_getter)
39 : context_getter_(context_getter), 39 : context_getter_(context_getter),
40 closed_(false), 40 closed_(true),
kkania 2013/02/22 01:35:24 if you're going to have closed_ = true on start, y
chrisgao (Use stgao instead) 2013/02/27 19:29:44 Done.
41 on_update_event_(&lock_) {} 41 on_update_event_(&lock_) {}
42 42
43 bool SyncWebSocketImpl::Core::Connect(const GURL& url) { 43 bool SyncWebSocketImpl::Core::Connect(const GURL& url) {
44 bool success = false; 44 bool success = false;
45 base::WaitableEvent event(false, false); 45 base::WaitableEvent event(false, false);
46 context_getter_->GetNetworkTaskRunner()->PostTask( 46 context_getter_->GetNetworkTaskRunner()->PostTask(
47 FROM_HERE, 47 FROM_HERE,
48 base::Bind(&SyncWebSocketImpl::Core::ConnectOnIO, 48 base::Bind(&SyncWebSocketImpl::Core::ConnectOnIO,
49 this, url, &success, &event)); 49 this, url, &success, &event));
50 event.Wait(); 50 event.Wait();
51 if (success) {
52 base::AutoLock lock(lock_);
53 closed_ = false;
kkania 2013/02/22 01:35:24 i think this is a race; the socket could have been
chrisgao (Use stgao instead) 2013/02/27 19:29:44 As Core::OnConnectCompletedOnIO and Core::OnClose
54 }
51 return success; 55 return success;
52 } 56 }
53 57
54 bool SyncWebSocketImpl::Core::Send(const std::string& message) { 58 bool SyncWebSocketImpl::Core::Send(const std::string& message) {
55 bool success = false; 59 bool success = false;
56 base::WaitableEvent event(false, false); 60 base::WaitableEvent event(false, false);
57 context_getter_->GetNetworkTaskRunner()->PostTask( 61 context_getter_->GetNetworkTaskRunner()->PostTask(
58 FROM_HERE, 62 FROM_HERE,
59 base::Bind(&SyncWebSocketImpl::Core::SendOnIO, 63 base::Bind(&SyncWebSocketImpl::Core::SendOnIO,
60 this, message, &success, &event)); 64 this, message, &success, &event));
(...skipping 27 matching lines...) Expand all
88 closed_ = true; 92 closed_ = true;
89 on_update_event_.Signal(); 93 on_update_event_.Signal();
90 } 94 }
91 95
92 SyncWebSocketImpl::Core::~Core() { } 96 SyncWebSocketImpl::Core::~Core() { }
93 97
94 void SyncWebSocketImpl::Core::ConnectOnIO( 98 void SyncWebSocketImpl::Core::ConnectOnIO(
95 const GURL& url, 99 const GURL& url,
96 bool* success, 100 bool* success,
97 base::WaitableEvent* event) { 101 base::WaitableEvent* event) {
102 base::AutoLock lock(lock_);
103 received_queue_.clear();
98 socket_.reset(new WebSocket(context_getter_, url, this)); 104 socket_.reset(new WebSocket(context_getter_, url, this));
99 socket_->Connect(base::Bind( 105 socket_->Connect(base::Bind(
100 &SyncWebSocketImpl::Core::OnConnectCompletedOnIO, 106 &SyncWebSocketImpl::Core::OnConnectCompletedOnIO,
101 this, success, event)); 107 this, success, event));
102 } 108 }
103 109
104 void SyncWebSocketImpl::Core::OnConnectCompletedOnIO( 110 void SyncWebSocketImpl::Core::OnConnectCompletedOnIO(
105 bool* success, 111 bool* success,
106 base::WaitableEvent* event, 112 base::WaitableEvent* event,
107 int error) { 113 int error) {
(...skipping 10 matching lines...) Expand all
118 } 124 }
119 125
120 void SyncWebSocketImpl::Core::OnDestruct() const { 126 void SyncWebSocketImpl::Core::OnDestruct() const {
121 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner = 127 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner =
122 context_getter_->GetNetworkTaskRunner(); 128 context_getter_->GetNetworkTaskRunner();
123 if (network_task_runner->BelongsToCurrentThread()) 129 if (network_task_runner->BelongsToCurrentThread())
124 delete this; 130 delete this;
125 else 131 else
126 network_task_runner->DeleteSoon(FROM_HERE, this); 132 network_task_runner->DeleteSoon(FROM_HERE, this);
127 } 133 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698