Index: chrome/browser/net/websocket_experiment/websocket_experiment_task.h |
diff --git a/chrome/browser/net/websocket_experiment/websocket_experiment_task.h b/chrome/browser/net/websocket_experiment/websocket_experiment_task.h |
deleted file mode 100644 |
index bb8763225c0019fd9a7bc668982a0d3ae6fa4316..0000000000000000000000000000000000000000 |
--- a/chrome/browser/net/websocket_experiment/websocket_experiment_task.h |
+++ /dev/null |
@@ -1,214 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
-// |
-// WebSocket live experiment task. |
-// It will try the following scenario. |
-// |
-// - Fetch |http_url| within |url_fetch_deadline_ms| msec. |
-// If failed, the task is aborted (no http reachability) |
-// |
-// - Connect to |url| with WebSocket protocol within |
-// |websocket_onopen_deadline_ms| msec. |
-// Checks WebSocket connection can be established. |
-// |
-// - Send |websocket_hello_message| on the WebSocket connection and |
-// wait it from server within |websocket_hello_echoback_deadline_ms| msec. |
-// Checks message can be sent/received on the WebSocket connection. |
-// |
-// - Keep connection idle at least |websocket_idle_ms| msec. |
-// Checks WebSocket connection keep open in idle state. |
-// |
-// - Wait for some message from server within |
-// |websocket_receive_push_message_deadline_ms| msec, and echo it back. |
-// Checks server can push a message after connection has been idle. |
-// |
-// - Expect that |websocket_bye_message| message arrives within |
-// |websocket_bye_deadline_ms| msec from server. |
-// Checks previous message was sent to the server. |
-// |
-// - Close the connection and wait |websocket_close_deadline_ms| msec |
-// for onclose. |
-// Checks WebSocket connection can be closed normally. |
- |
-#ifndef CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_TASK_H_ |
-#define CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_TASK_H_ |
-#pragma once |
- |
-#include <deque> |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "base/task.h" |
-#include "base/time.h" |
-#include "content/common/url_fetcher.h" |
-#include "googleurl/src/gurl.h" |
-#include "net/base/completion_callback.h" |
-#include "net/base/net_errors.h" |
-#include "net/websockets/websocket.h" |
- |
-namespace net { |
-class WebSocket; |
-} // namespace net |
- |
-namespace chrome_browser_net_websocket_experiment { |
- |
-class WebSocketExperimentTask : public URLFetcher::Delegate, |
- public net::WebSocketDelegate { |
- public: |
- enum State { |
- STATE_NONE, |
- STATE_URL_FETCH, |
- STATE_URL_FETCH_COMPLETE, |
- STATE_WEBSOCKET_CONNECT, |
- STATE_WEBSOCKET_CONNECT_COMPLETE, |
- STATE_WEBSOCKET_SEND_HELLO, |
- STATE_WEBSOCKET_RECV_HELLO, |
- STATE_WEBSOCKET_KEEP_IDLE, |
- STATE_WEBSOCKET_KEEP_IDLE_COMPLETE, |
- STATE_WEBSOCKET_RECV_PUSH_MESSAGE, |
- STATE_WEBSOCKET_ECHO_BACK_MESSAGE, |
- STATE_WEBSOCKET_RECV_BYE, |
- STATE_WEBSOCKET_CLOSE, |
- STATE_WEBSOCKET_CLOSE_COMPLETE, |
- NUM_STATES, |
- }; |
- |
- class Config { |
- public: |
- Config(); |
- ~Config(); |
- |
- GURL url; |
- std::string ws_protocol; |
- std::string ws_origin; |
- std::string ws_location; |
- net::WebSocket::ProtocolVersion protocol_version; |
- |
- GURL http_url; |
- |
- int64 url_fetch_deadline_ms; |
- int64 websocket_onopen_deadline_ms; |
- std::string websocket_hello_message; |
- int64 websocket_hello_echoback_deadline_ms; |
- int64 websocket_idle_ms; |
- int64 websocket_receive_push_message_deadline_ms; |
- std::string websocket_bye_message; |
- int64 websocket_bye_deadline_ms; |
- int64 websocket_close_deadline_ms; |
- }; |
- |
- class Context { |
- public: |
- Context() {} |
- virtual ~Context() {} |
- |
- virtual URLFetcher* CreateURLFetcher( |
- const Config& config, URLFetcher::Delegate* delegate); |
- virtual net::WebSocket* CreateWebSocket( |
- const Config& config, net::WebSocketDelegate* delegate); |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(Context); |
- }; |
- |
- class Result { |
- public: |
- Result() |
- : last_result(net::OK), |
- last_state(STATE_NONE) {} |
- int last_result; |
- State last_state; |
- |
- base::TimeDelta url_fetch; |
- base::TimeDelta websocket_connect; |
- base::TimeDelta websocket_echo; |
- base::TimeDelta websocket_idle; |
- base::TimeDelta websocket_total; |
- }; |
- |
- // WebSocketExperimentTask will call |callback| with the last status code |
- // when the task is finished. |
- WebSocketExperimentTask(const Config& config, |
- net::CompletionCallback* callback); |
- virtual ~WebSocketExperimentTask(); |
- |
- // Initializes histograms that WebSocketExperimentTask will use to save |
- // results. Must be called once before calling SaveResult(). |
- static void InitHistogram(); |
- |
- // Releases histograms to store results. |
- // Must be called after all WebSocketExperimentTasks are finished. |
- static void ReleaseHistogram(); |
- |
- void Run(); |
- void Cancel(); |
- void SaveResult() const; |
- |
- const Config& config() const { return config_; } |
- const Result& result() const { return result_; } |
- |
- // URLFetcher::Delegate method. |
- virtual void OnURLFetchComplete(const URLFetcher* source, |
- const GURL& url, |
- const net::URLRequestStatus& status, |
- int response_code, |
- const net::ResponseCookies& cookies, |
- const std::string& data); |
- |
- // net::WebSocketDelegate methods |
- virtual void OnOpen(net::WebSocket* websocket); |
- virtual void OnMessage(net::WebSocket* websocket, const std::string& msg); |
- 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); |
- |
- private: |
- void OnTimedOut(); |
- |
- void DoLoop(int result); |
- |
- int DoURLFetch(); |
- int DoURLFetchComplete(int result); |
- int DoWebSocketConnect(); |
- int DoWebSocketConnectComplete(int result); |
- int DoWebSocketSendHello(); |
- int DoWebSocketReceiveHello(int result); |
- int DoWebSocketKeepIdle(); |
- int DoWebSocketKeepIdleComplete(int result); |
- int DoWebSocketReceivePushMessage(int result); |
- int DoWebSocketEchoBackMessage(); |
- int DoWebSocketReceiveBye(int result); |
- int DoWebSocketClose(); |
- int DoWebSocketCloseComplete(int result); |
- void SetTimeout(int64 deadline_ms); |
- void RevokeTimeoutTimer(); |
- void Finish(int result); |
- |
- Config config_; |
- scoped_ptr<Context> context_; |
- Result result_; |
- |
- ScopedRunnableMethodFactory<WebSocketExperimentTask> method_factory_; |
- net::CompletionCallback* callback_; |
- State next_state_; |
- |
- scoped_ptr<URLFetcher> url_fetcher_; |
- base::TimeTicks url_fetch_start_time_; |
- |
- scoped_refptr<net::WebSocket> websocket_; |
- int last_websocket_error_; |
- std::deque<std::string> received_messages_; |
- std::string push_message_; |
- base::TimeTicks websocket_connect_start_time_; |
- base::TimeTicks websocket_echo_start_time_; |
- base::TimeTicks websocket_idle_start_time_; |
- |
- DISALLOW_COPY_AND_ASSIGN(WebSocketExperimentTask); |
-}; |
- |
-} // namespace chrome_browser_net |
- |
-#endif // CHROME_BROWSER_NET_WEBSOCKET_EXPERIMENT_WEBSOCKET_EXPERIMENT_TASK_H_ |