summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-05 09:09:16 +0000
committerukai@chromium.org <ukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-05 09:09:16 +0000
commitfee3eb776d9c2797be9ee0abc619f9b4e5fb6a2d (patch)
treed1a9919ca4c248eecc785a47256b9ca0da63cb5a /chrome
parent831d36b259bb29400123b7c186d67276cbbb9eb8 (diff)
downloadchromium_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.cc21
-rw-r--r--chrome/browser/net/websocket_experiment/websocket_experiment_task.h5
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);