diff options
author | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-05 09:09:16 +0000 |
---|---|---|
committer | ukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-05 09:09:16 +0000 |
commit | fee3eb776d9c2797be9ee0abc619f9b4e5fb6a2d (patch) | |
tree | d1a9919ca4c248eecc785a47256b9ca0da63cb5a /chrome | |
parent | 831d36b259bb29400123b7c186d67276cbbb9eb8 (diff) | |
download | chromium_src-fee3eb776d9c2797be9ee0abc619f9b4e5fb6a2d.zip chromium_src-fee3eb776d9c2797be9ee0abc619f9b4e5fb6a2d.tar.gz chromium_src-fee3eb776d9c2797be9ee0abc619f9b4e5fb6a2d.tar.bz2 |
Update new WebSocket API.
Add new readyState CLOSING.
Fix close() to match the API spec.
OnError reports WebSocket error, and OnSocketError reports socket level error
OnClose reports was_clean.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/1587008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43605 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/net/websocket_experiment/websocket_experiment_task.cc | 21 | ||||
-rw-r--r-- | chrome/browser/net/websocket_experiment/websocket_experiment_task.h | 5 |
2 files changed, 19 insertions, 7 deletions
diff --git a/chrome/browser/net/websocket_experiment/websocket_experiment_task.cc b/chrome/browser/net/websocket_experiment/websocket_experiment_task.cc index 174c6d8..6a43e17 100644 --- a/chrome/browser/net/websocket_experiment/websocket_experiment_task.cc +++ b/chrome/browser/net/websocket_experiment/websocket_experiment_task.cc @@ -322,7 +322,12 @@ void WebSocketExperimentTask::OnMessage( DoLoop(result); } -void WebSocketExperimentTask::OnClose(net::WebSocket* websocket) { +void WebSocketExperimentTask::OnError(net::WebSocket* websocket) { + // TODO(ukai): record error count? +} + +void WebSocketExperimentTask::OnClose( + net::WebSocket* websocket, bool was_clean) { RevokeTimeoutTimer(); websocket_ = NULL; result_.websocket_total = @@ -330,14 +335,20 @@ void WebSocketExperimentTask::OnClose(net::WebSocket* websocket) { int result = net::ERR_CONNECTION_CLOSED; if (last_websocket_error_ != net::OK) result = last_websocket_error_; - if (next_state_ == STATE_WEBSOCKET_CLOSE_COMPLETE) - result = net::OK; + if (config_.protocol_version == net::WebSocket::DEFAULT_VERSION) { + if (next_state_ == STATE_WEBSOCKET_CLOSE_COMPLETE && was_clean) + result = net::OK; + } else { + // DRAFT75 doesn't report was_clean correctly. + if (next_state_ == STATE_WEBSOCKET_CLOSE_COMPLETE) + result = net::OK; + } DoLoop(result); } -void WebSocketExperimentTask::OnError( +void WebSocketExperimentTask::OnSocketError( const net::WebSocket* websocket, int error) { - DLOG(INFO) << "WebSocket error=" << net::ErrorToString(error) + DLOG(INFO) << "WebSocket socket level error=" << net::ErrorToString(error) << " next_state=" << next_state_ << " for " << config_.url; last_websocket_error_ = error; diff --git a/chrome/browser/net/websocket_experiment/websocket_experiment_task.h b/chrome/browser/net/websocket_experiment/websocket_experiment_task.h index 4ae9078..e3ec500 100644 --- a/chrome/browser/net/websocket_experiment/websocket_experiment_task.h +++ b/chrome/browser/net/websocket_experiment/websocket_experiment_task.h @@ -154,8 +154,9 @@ class WebSocketExperimentTask : public URLFetcher::Delegate, // net::WebSocketDelegate methods virtual void OnOpen(net::WebSocket* websocket); virtual void OnMessage(net::WebSocket* websocket, const std::string& msg); - virtual void OnClose(net::WebSocket* websocket); - virtual void OnError(const net::WebSocket* websocket, int error); + virtual void OnError(net::WebSocket* websocket); + virtual void OnClose(net::WebSocket* websocket, bool was_clean); + virtual void OnSocketError(const net::WebSocket* websocket, int error); void SetContext(Context* context); |