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

Unified 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 nits. 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/chromedriver/net/sync_websocket_impl.cc
diff --git a/chrome/test/chromedriver/net/sync_websocket_impl.cc b/chrome/test/chromedriver/net/sync_websocket_impl.cc
index b3fcd79d82b2941b54370eae7ce5d41aaffa40f5..b91e2fd614346258ab7526f040d05bcf1695fa05 100644
--- a/chrome/test/chromedriver/net/sync_websocket_impl.cc
+++ b/chrome/test/chromedriver/net/sync_websocket_impl.cc
@@ -19,6 +19,10 @@ SyncWebSocketImpl::SyncWebSocketImpl(
SyncWebSocketImpl::~SyncWebSocketImpl() {}
+bool SyncWebSocketImpl::IsConnected() {
+ return core_->IsConnected();
+}
+
bool SyncWebSocketImpl::Connect(const GURL& url) {
return core_->Connect(url);
}
@@ -37,9 +41,14 @@ bool SyncWebSocketImpl::HasNextMessage() {
SyncWebSocketImpl::Core::Core(net::URLRequestContextGetter* context_getter)
: context_getter_(context_getter),
- closed_(false),
+ open_(false),
on_update_event_(&lock_) {}
+bool SyncWebSocketImpl::Core::IsConnected() {
+ base::AutoLock lock(lock_);
+ return open_;
+}
+
bool SyncWebSocketImpl::Core::Connect(const GURL& url) {
bool success = false;
base::WaitableEvent event(false, false);
@@ -64,8 +73,8 @@ bool SyncWebSocketImpl::Core::Send(const std::string& message) {
bool SyncWebSocketImpl::Core::ReceiveNextMessage(std::string* message) {
base::AutoLock lock(lock_);
- while (received_queue_.empty() && !closed_) on_update_event_.Wait();
- if (closed_)
+ while (received_queue_.empty() && open_) on_update_event_.Wait();
+ if (!open_)
return false;
*message = received_queue_.front();
received_queue_.pop_front();
@@ -85,7 +94,7 @@ void SyncWebSocketImpl::Core::OnMessageReceived(const std::string& message) {
void SyncWebSocketImpl::Core::OnClose() {
base::AutoLock lock(lock_);
- closed_ = true;
+ open_ = false;
on_update_event_.Signal();
}
@@ -95,6 +104,8 @@ void SyncWebSocketImpl::Core::ConnectOnIO(
const GURL& url,
bool* success,
base::WaitableEvent* event) {
+ base::AutoLock lock(lock_);
kkania 2013/03/04 23:33:57 unlock after the queue is cleared, in case WebSock
chrisgao (Use stgao instead) 2013/03/05 06:58:17 Done.
+ received_queue_.clear();
socket_.reset(new WebSocket(context_getter_, url, this));
socket_->Connect(base::Bind(
&SyncWebSocketImpl::Core::OnConnectCompletedOnIO,
@@ -106,6 +117,10 @@ void SyncWebSocketImpl::Core::OnConnectCompletedOnIO(
base::WaitableEvent* event,
int error) {
*success = (error == net::OK);
+ if (*success) {
+ base::AutoLock lock(lock_);
+ open_ = true;
+ }
event->Signal();
}

Powered by Google App Engine
This is Rietveld 408576698