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

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..bbf1d5c49c9847b685cb15196fb0add255451d77 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),
+ is_connected_(false),
on_update_event_(&lock_) {}
+bool SyncWebSocketImpl::Core::IsConnected() {
+ base::AutoLock lock(lock_);
+ return is_connected_;
+}
+
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() && is_connected_) on_update_event_.Wait();
+ if (!is_connected_)
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;
+ is_connected_ = false;
on_update_event_.Signal();
}
@@ -95,6 +104,10 @@ void SyncWebSocketImpl::Core::ConnectOnIO(
const GURL& url,
bool* success,
base::WaitableEvent* event) {
+ {
+ base::AutoLock lock(lock_);
+ received_queue_.clear();
+ }
socket_.reset(new WebSocket(context_getter_, url, this));
socket_->Connect(base::Bind(
&SyncWebSocketImpl::Core::OnConnectCompletedOnIO,
@@ -106,6 +119,10 @@ void SyncWebSocketImpl::Core::OnConnectCompletedOnIO(
base::WaitableEvent* event,
int error) {
*success = (error == net::OK);
+ if (*success) {
+ base::AutoLock lock(lock_);
+ is_connected_ = true;
+ }
event->Signal();
}
« no previous file with comments | « chrome/test/chromedriver/net/sync_websocket_impl.h ('k') | chrome/test/chromedriver/net/sync_websocket_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698