| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <list> | 5 #include <list> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 Status CloserFunc() { | 25 Status CloserFunc() { |
| 26 return Status(kOk); | 26 return Status(kOk); |
| 27 } | 27 } |
| 28 | 28 |
| 29 class MockSyncWebSocket : public SyncWebSocket { | 29 class MockSyncWebSocket : public SyncWebSocket { |
| 30 public: | 30 public: |
| 31 MockSyncWebSocket() : connected_(false), id_(-1), queued_messages_(1) {} | 31 MockSyncWebSocket() : connected_(false), id_(-1), queued_messages_(1) {} |
| 32 virtual ~MockSyncWebSocket() {} | 32 virtual ~MockSyncWebSocket() {} |
| 33 | 33 |
| 34 virtual bool IsConnected() OVERRIDE { | 34 virtual bool IsConnected() override { |
| 35 return connected_; | 35 return connected_; |
| 36 } | 36 } |
| 37 | 37 |
| 38 virtual bool Connect(const GURL& url) OVERRIDE { | 38 virtual bool Connect(const GURL& url) override { |
| 39 EXPECT_STREQ("http://url/", url.possibly_invalid_spec().c_str()); | 39 EXPECT_STREQ("http://url/", url.possibly_invalid_spec().c_str()); |
| 40 connected_ = true; | 40 connected_ = true; |
| 41 return true; | 41 return true; |
| 42 } | 42 } |
| 43 | 43 |
| 44 virtual bool Send(const std::string& message) OVERRIDE { | 44 virtual bool Send(const std::string& message) override { |
| 45 EXPECT_TRUE(connected_); | 45 EXPECT_TRUE(connected_); |
| 46 scoped_ptr<base::Value> value(base::JSONReader::Read(message)); | 46 scoped_ptr<base::Value> value(base::JSONReader::Read(message)); |
| 47 base::DictionaryValue* dict = NULL; | 47 base::DictionaryValue* dict = NULL; |
| 48 EXPECT_TRUE(value->GetAsDictionary(&dict)); | 48 EXPECT_TRUE(value->GetAsDictionary(&dict)); |
| 49 if (!dict) | 49 if (!dict) |
| 50 return false; | 50 return false; |
| 51 EXPECT_TRUE(dict->GetInteger("id", &id_)); | 51 EXPECT_TRUE(dict->GetInteger("id", &id_)); |
| 52 std::string method; | 52 std::string method; |
| 53 EXPECT_TRUE(dict->GetString("method", &method)); | 53 EXPECT_TRUE(dict->GetString("method", &method)); |
| 54 EXPECT_STREQ("method", method.c_str()); | 54 EXPECT_STREQ("method", method.c_str()); |
| 55 base::DictionaryValue* params = NULL; | 55 base::DictionaryValue* params = NULL; |
| 56 EXPECT_TRUE(dict->GetDictionary("params", ¶ms)); | 56 EXPECT_TRUE(dict->GetDictionary("params", ¶ms)); |
| 57 if (!params) | 57 if (!params) |
| 58 return false; | 58 return false; |
| 59 int param = -1; | 59 int param = -1; |
| 60 EXPECT_TRUE(params->GetInteger("param", ¶m)); | 60 EXPECT_TRUE(params->GetInteger("param", ¶m)); |
| 61 EXPECT_EQ(1, param); | 61 EXPECT_EQ(1, param); |
| 62 return true; | 62 return true; |
| 63 } | 63 } |
| 64 | 64 |
| 65 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 65 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 66 std::string* message, | 66 std::string* message, |
| 67 const base::TimeDelta& timeout) OVERRIDE { | 67 const base::TimeDelta& timeout) override { |
| 68 if (timeout <= base::TimeDelta()) | 68 if (timeout <= base::TimeDelta()) |
| 69 return SyncWebSocket::kTimeout; | 69 return SyncWebSocket::kTimeout; |
| 70 base::DictionaryValue response; | 70 base::DictionaryValue response; |
| 71 response.SetInteger("id", id_); | 71 response.SetInteger("id", id_); |
| 72 base::DictionaryValue result; | 72 base::DictionaryValue result; |
| 73 result.SetInteger("param", 1); | 73 result.SetInteger("param", 1); |
| 74 response.Set("result", result.DeepCopy()); | 74 response.Set("result", result.DeepCopy()); |
| 75 base::JSONWriter::Write(&response, message); | 75 base::JSONWriter::Write(&response, message); |
| 76 --queued_messages_; | 76 --queued_messages_; |
| 77 return SyncWebSocket::kOk; | 77 return SyncWebSocket::kOk; |
| 78 } | 78 } |
| 79 | 79 |
| 80 virtual bool HasNextMessage() OVERRIDE { | 80 virtual bool HasNextMessage() override { |
| 81 return queued_messages_ > 0; | 81 return queued_messages_ > 0; |
| 82 } | 82 } |
| 83 | 83 |
| 84 protected: | 84 protected: |
| 85 bool connected_; | 85 bool connected_; |
| 86 int id_; | 86 int id_; |
| 87 int queued_messages_; | 87 int queued_messages_; |
| 88 }; | 88 }; |
| 89 | 89 |
| 90 template <typename T> | 90 template <typename T> |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 ASSERT_STREQ("{\"param\":1}", json.c_str()); | 128 ASSERT_STREQ("{\"param\":1}", json.c_str()); |
| 129 } | 129 } |
| 130 | 130 |
| 131 namespace { | 131 namespace { |
| 132 | 132 |
| 133 class MockSyncWebSocket2 : public SyncWebSocket { | 133 class MockSyncWebSocket2 : public SyncWebSocket { |
| 134 public: | 134 public: |
| 135 MockSyncWebSocket2() {} | 135 MockSyncWebSocket2() {} |
| 136 virtual ~MockSyncWebSocket2() {} | 136 virtual ~MockSyncWebSocket2() {} |
| 137 | 137 |
| 138 virtual bool IsConnected() OVERRIDE { | 138 virtual bool IsConnected() override { |
| 139 return false; | 139 return false; |
| 140 } | 140 } |
| 141 | 141 |
| 142 virtual bool Connect(const GURL& url) OVERRIDE { | 142 virtual bool Connect(const GURL& url) override { |
| 143 return false; | 143 return false; |
| 144 } | 144 } |
| 145 | 145 |
| 146 virtual bool Send(const std::string& message) OVERRIDE { | 146 virtual bool Send(const std::string& message) override { |
| 147 EXPECT_TRUE(false); | 147 EXPECT_TRUE(false); |
| 148 return false; | 148 return false; |
| 149 } | 149 } |
| 150 | 150 |
| 151 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 151 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 152 std::string* message, | 152 std::string* message, |
| 153 const base::TimeDelta& timeout) OVERRIDE { | 153 const base::TimeDelta& timeout) override { |
| 154 EXPECT_TRUE(false); | 154 EXPECT_TRUE(false); |
| 155 return SyncWebSocket::kDisconnected; | 155 return SyncWebSocket::kDisconnected; |
| 156 } | 156 } |
| 157 | 157 |
| 158 virtual bool HasNextMessage() OVERRIDE { | 158 virtual bool HasNextMessage() override { |
| 159 return true; | 159 return true; |
| 160 } | 160 } |
| 161 }; | 161 }; |
| 162 | 162 |
| 163 } // namespace | 163 } // namespace |
| 164 | 164 |
| 165 TEST_F(DevToolsClientImplTest, ConnectIfNecessaryConnectFails) { | 165 TEST_F(DevToolsClientImplTest, ConnectIfNecessaryConnectFails) { |
| 166 SyncWebSocketFactory factory = | 166 SyncWebSocketFactory factory = |
| 167 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket2>); | 167 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket2>); |
| 168 DevToolsClientImpl client(factory, "http://url", "id", | 168 DevToolsClientImpl client(factory, "http://url", "id", |
| 169 base::Bind(&CloserFunc)); | 169 base::Bind(&CloserFunc)); |
| 170 ASSERT_EQ(kDisconnected, client.ConnectIfNecessary().code()); | 170 ASSERT_EQ(kDisconnected, client.ConnectIfNecessary().code()); |
| 171 } | 171 } |
| 172 | 172 |
| 173 namespace { | 173 namespace { |
| 174 | 174 |
| 175 class MockSyncWebSocket3 : public SyncWebSocket { | 175 class MockSyncWebSocket3 : public SyncWebSocket { |
| 176 public: | 176 public: |
| 177 MockSyncWebSocket3() : connected_(false) {} | 177 MockSyncWebSocket3() : connected_(false) {} |
| 178 virtual ~MockSyncWebSocket3() {} | 178 virtual ~MockSyncWebSocket3() {} |
| 179 | 179 |
| 180 virtual bool IsConnected() OVERRIDE { | 180 virtual bool IsConnected() override { |
| 181 return connected_; | 181 return connected_; |
| 182 } | 182 } |
| 183 | 183 |
| 184 virtual bool Connect(const GURL& url) OVERRIDE { | 184 virtual bool Connect(const GURL& url) override { |
| 185 connected_ = true; | 185 connected_ = true; |
| 186 return true; | 186 return true; |
| 187 } | 187 } |
| 188 | 188 |
| 189 virtual bool Send(const std::string& message) OVERRIDE { | 189 virtual bool Send(const std::string& message) override { |
| 190 return false; | 190 return false; |
| 191 } | 191 } |
| 192 | 192 |
| 193 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 193 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 194 std::string* message, | 194 std::string* message, |
| 195 const base::TimeDelta& timeout) OVERRIDE { | 195 const base::TimeDelta& timeout) override { |
| 196 EXPECT_TRUE(false); | 196 EXPECT_TRUE(false); |
| 197 return SyncWebSocket::kDisconnected; | 197 return SyncWebSocket::kDisconnected; |
| 198 } | 198 } |
| 199 | 199 |
| 200 virtual bool HasNextMessage() OVERRIDE { | 200 virtual bool HasNextMessage() override { |
| 201 return true; | 201 return true; |
| 202 } | 202 } |
| 203 | 203 |
| 204 private: | 204 private: |
| 205 bool connected_; | 205 bool connected_; |
| 206 }; | 206 }; |
| 207 | 207 |
| 208 } // namespace | 208 } // namespace |
| 209 | 209 |
| 210 TEST_F(DevToolsClientImplTest, SendCommandSendFails) { | 210 TEST_F(DevToolsClientImplTest, SendCommandSendFails) { |
| 211 SyncWebSocketFactory factory = | 211 SyncWebSocketFactory factory = |
| 212 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket3>); | 212 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket3>); |
| 213 DevToolsClientImpl client(factory, "http://url", "id", | 213 DevToolsClientImpl client(factory, "http://url", "id", |
| 214 base::Bind(&CloserFunc)); | 214 base::Bind(&CloserFunc)); |
| 215 ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); | 215 ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); |
| 216 base::DictionaryValue params; | 216 base::DictionaryValue params; |
| 217 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 217 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
| 218 } | 218 } |
| 219 | 219 |
| 220 namespace { | 220 namespace { |
| 221 | 221 |
| 222 class MockSyncWebSocket4 : public SyncWebSocket { | 222 class MockSyncWebSocket4 : public SyncWebSocket { |
| 223 public: | 223 public: |
| 224 MockSyncWebSocket4() : connected_(false) {} | 224 MockSyncWebSocket4() : connected_(false) {} |
| 225 virtual ~MockSyncWebSocket4() {} | 225 virtual ~MockSyncWebSocket4() {} |
| 226 | 226 |
| 227 virtual bool IsConnected() OVERRIDE { | 227 virtual bool IsConnected() override { |
| 228 return connected_; | 228 return connected_; |
| 229 } | 229 } |
| 230 | 230 |
| 231 virtual bool Connect(const GURL& url) OVERRIDE { | 231 virtual bool Connect(const GURL& url) override { |
| 232 connected_ = true; | 232 connected_ = true; |
| 233 return true; | 233 return true; |
| 234 } | 234 } |
| 235 | 235 |
| 236 virtual bool Send(const std::string& message) OVERRIDE { | 236 virtual bool Send(const std::string& message) override { |
| 237 return true; | 237 return true; |
| 238 } | 238 } |
| 239 | 239 |
| 240 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 240 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 241 std::string* message, | 241 std::string* message, |
| 242 const base::TimeDelta& timeout) OVERRIDE { | 242 const base::TimeDelta& timeout) override { |
| 243 return SyncWebSocket::kDisconnected; | 243 return SyncWebSocket::kDisconnected; |
| 244 } | 244 } |
| 245 | 245 |
| 246 virtual bool HasNextMessage() OVERRIDE { | 246 virtual bool HasNextMessage() override { |
| 247 return true; | 247 return true; |
| 248 } | 248 } |
| 249 | 249 |
| 250 private: | 250 private: |
| 251 bool connected_; | 251 bool connected_; |
| 252 }; | 252 }; |
| 253 | 253 |
| 254 } // namespace | 254 } // namespace |
| 255 | 255 |
| 256 TEST_F(DevToolsClientImplTest, SendCommandReceiveNextMessageFails) { | 256 TEST_F(DevToolsClientImplTest, SendCommandReceiveNextMessageFails) { |
| 257 SyncWebSocketFactory factory = | 257 SyncWebSocketFactory factory = |
| 258 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket4>); | 258 base::Bind(&CreateMockSyncWebSocket<MockSyncWebSocket4>); |
| 259 DevToolsClientImpl client(factory, "http://url", "id", | 259 DevToolsClientImpl client(factory, "http://url", "id", |
| 260 base::Bind(&CloserFunc)); | 260 base::Bind(&CloserFunc)); |
| 261 ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); | 261 ASSERT_EQ(kOk, client.ConnectIfNecessary().code()); |
| 262 base::DictionaryValue params; | 262 base::DictionaryValue params; |
| 263 ASSERT_TRUE(client.SendCommand("method", params).IsError()); | 263 ASSERT_TRUE(client.SendCommand("method", params).IsError()); |
| 264 } | 264 } |
| 265 | 265 |
| 266 namespace { | 266 namespace { |
| 267 | 267 |
| 268 class FakeSyncWebSocket : public SyncWebSocket { | 268 class FakeSyncWebSocket : public SyncWebSocket { |
| 269 public: | 269 public: |
| 270 FakeSyncWebSocket() : connected_(false) {} | 270 FakeSyncWebSocket() : connected_(false) {} |
| 271 virtual ~FakeSyncWebSocket() {} | 271 virtual ~FakeSyncWebSocket() {} |
| 272 | 272 |
| 273 virtual bool IsConnected() OVERRIDE { | 273 virtual bool IsConnected() override { |
| 274 return connected_; | 274 return connected_; |
| 275 } | 275 } |
| 276 | 276 |
| 277 virtual bool Connect(const GURL& url) OVERRIDE { | 277 virtual bool Connect(const GURL& url) override { |
| 278 EXPECT_FALSE(connected_); | 278 EXPECT_FALSE(connected_); |
| 279 connected_ = true; | 279 connected_ = true; |
| 280 return true; | 280 return true; |
| 281 } | 281 } |
| 282 | 282 |
| 283 virtual bool Send(const std::string& message) OVERRIDE { | 283 virtual bool Send(const std::string& message) override { |
| 284 return true; | 284 return true; |
| 285 } | 285 } |
| 286 | 286 |
| 287 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 287 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 288 std::string* message, | 288 std::string* message, |
| 289 const base::TimeDelta& timeout) OVERRIDE { | 289 const base::TimeDelta& timeout) override { |
| 290 return SyncWebSocket::kOk; | 290 return SyncWebSocket::kOk; |
| 291 } | 291 } |
| 292 | 292 |
| 293 virtual bool HasNextMessage() OVERRIDE { | 293 virtual bool HasNextMessage() override { |
| 294 return true; | 294 return true; |
| 295 } | 295 } |
| 296 | 296 |
| 297 private: | 297 private: |
| 298 bool connected_; | 298 bool connected_; |
| 299 }; | 299 }; |
| 300 | 300 |
| 301 bool ReturnCommand( | 301 bool ReturnCommand( |
| 302 const std::string& message, | 302 const std::string& message, |
| 303 int expected_id, | 303 int expected_id, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 return true; | 346 return true; |
| 347 } | 347 } |
| 348 | 348 |
| 349 class MockListener : public DevToolsEventListener { | 349 class MockListener : public DevToolsEventListener { |
| 350 public: | 350 public: |
| 351 MockListener() : called_(false) {} | 351 MockListener() : called_(false) {} |
| 352 virtual ~MockListener() { | 352 virtual ~MockListener() { |
| 353 EXPECT_TRUE(called_); | 353 EXPECT_TRUE(called_); |
| 354 } | 354 } |
| 355 | 355 |
| 356 virtual Status OnConnected(DevToolsClient* client) OVERRIDE { | 356 virtual Status OnConnected(DevToolsClient* client) override { |
| 357 return Status(kOk); | 357 return Status(kOk); |
| 358 } | 358 } |
| 359 | 359 |
| 360 virtual Status OnEvent(DevToolsClient* client, | 360 virtual Status OnEvent(DevToolsClient* client, |
| 361 const std::string& method, | 361 const std::string& method, |
| 362 const base::DictionaryValue& params) OVERRIDE { | 362 const base::DictionaryValue& params) override { |
| 363 called_ = true; | 363 called_ = true; |
| 364 EXPECT_STREQ("method", method.c_str()); | 364 EXPECT_STREQ("method", method.c_str()); |
| 365 EXPECT_TRUE(params.HasKey("key")); | 365 EXPECT_TRUE(params.HasKey("key")); |
| 366 return Status(kOk); | 366 return Status(kOk); |
| 367 } | 367 } |
| 368 | 368 |
| 369 private: | 369 private: |
| 370 bool called_; | 370 bool called_; |
| 371 }; | 371 }; |
| 372 | 372 |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 on_event_called_(false) { | 695 on_event_called_(false) { |
| 696 client_->AddListener(this); | 696 client_->AddListener(this); |
| 697 } | 697 } |
| 698 virtual ~OnConnectedListener() {} | 698 virtual ~OnConnectedListener() {} |
| 699 | 699 |
| 700 void VerifyCalled() { | 700 void VerifyCalled() { |
| 701 EXPECT_TRUE(on_connected_called_); | 701 EXPECT_TRUE(on_connected_called_); |
| 702 EXPECT_TRUE(on_event_called_); | 702 EXPECT_TRUE(on_event_called_); |
| 703 } | 703 } |
| 704 | 704 |
| 705 virtual Status OnConnected(DevToolsClient* client) OVERRIDE { | 705 virtual Status OnConnected(DevToolsClient* client) override { |
| 706 EXPECT_EQ(client_, client); | 706 EXPECT_EQ(client_, client); |
| 707 EXPECT_STREQ("onconnected-id", client->GetId().c_str()); | 707 EXPECT_STREQ("onconnected-id", client->GetId().c_str()); |
| 708 EXPECT_FALSE(on_connected_called_); | 708 EXPECT_FALSE(on_connected_called_); |
| 709 EXPECT_FALSE(on_event_called_); | 709 EXPECT_FALSE(on_event_called_); |
| 710 on_connected_called_ = true; | 710 on_connected_called_ = true; |
| 711 base::DictionaryValue params; | 711 base::DictionaryValue params; |
| 712 return client_->SendCommand(method_, params); | 712 return client_->SendCommand(method_, params); |
| 713 } | 713 } |
| 714 | 714 |
| 715 virtual Status OnEvent(DevToolsClient* client, | 715 virtual Status OnEvent(DevToolsClient* client, |
| 716 const std::string& method, | 716 const std::string& method, |
| 717 const base::DictionaryValue& params) OVERRIDE { | 717 const base::DictionaryValue& params) override { |
| 718 EXPECT_EQ(client_, client); | 718 EXPECT_EQ(client_, client); |
| 719 EXPECT_STREQ("onconnected-id", client->GetId().c_str()); | 719 EXPECT_STREQ("onconnected-id", client->GetId().c_str()); |
| 720 EXPECT_TRUE(on_connected_called_); | 720 EXPECT_TRUE(on_connected_called_); |
| 721 on_event_called_ = true; | 721 on_event_called_ = true; |
| 722 return Status(kOk); | 722 return Status(kOk); |
| 723 } | 723 } |
| 724 | 724 |
| 725 private: | 725 private: |
| 726 std::string method_; | 726 std::string method_; |
| 727 DevToolsClient* client_; | 727 DevToolsClient* client_; |
| 728 bool on_connected_called_; | 728 bool on_connected_called_; |
| 729 bool on_event_called_; | 729 bool on_event_called_; |
| 730 }; | 730 }; |
| 731 | 731 |
| 732 class OnConnectedSyncWebSocket : public SyncWebSocket { | 732 class OnConnectedSyncWebSocket : public SyncWebSocket { |
| 733 public: | 733 public: |
| 734 OnConnectedSyncWebSocket() : connected_(false) {} | 734 OnConnectedSyncWebSocket() : connected_(false) {} |
| 735 virtual ~OnConnectedSyncWebSocket() {} | 735 virtual ~OnConnectedSyncWebSocket() {} |
| 736 | 736 |
| 737 virtual bool IsConnected() OVERRIDE { | 737 virtual bool IsConnected() override { |
| 738 return connected_; | 738 return connected_; |
| 739 } | 739 } |
| 740 | 740 |
| 741 virtual bool Connect(const GURL& url) OVERRIDE { | 741 virtual bool Connect(const GURL& url) override { |
| 742 connected_ = true; | 742 connected_ = true; |
| 743 return true; | 743 return true; |
| 744 } | 744 } |
| 745 | 745 |
| 746 virtual bool Send(const std::string& message) OVERRIDE { | 746 virtual bool Send(const std::string& message) override { |
| 747 EXPECT_TRUE(connected_); | 747 EXPECT_TRUE(connected_); |
| 748 scoped_ptr<base::Value> value(base::JSONReader::Read(message)); | 748 scoped_ptr<base::Value> value(base::JSONReader::Read(message)); |
| 749 base::DictionaryValue* dict = NULL; | 749 base::DictionaryValue* dict = NULL; |
| 750 EXPECT_TRUE(value->GetAsDictionary(&dict)); | 750 EXPECT_TRUE(value->GetAsDictionary(&dict)); |
| 751 if (!dict) | 751 if (!dict) |
| 752 return false; | 752 return false; |
| 753 int id; | 753 int id; |
| 754 EXPECT_TRUE(dict->GetInteger("id", &id)); | 754 EXPECT_TRUE(dict->GetInteger("id", &id)); |
| 755 std::string method; | 755 std::string method; |
| 756 EXPECT_TRUE(dict->GetString("method", &method)); | 756 EXPECT_TRUE(dict->GetString("method", &method)); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 768 event.Set("params", new base::DictionaryValue()); | 768 event.Set("params", new base::DictionaryValue()); |
| 769 std::string json_event; | 769 std::string json_event; |
| 770 base::JSONWriter::Write(&event, &json_event); | 770 base::JSONWriter::Write(&event, &json_event); |
| 771 queued_response_.push_back(json_event); | 771 queued_response_.push_back(json_event); |
| 772 | 772 |
| 773 return true; | 773 return true; |
| 774 } | 774 } |
| 775 | 775 |
| 776 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 776 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 777 std::string* message, | 777 std::string* message, |
| 778 const base::TimeDelta& timeout) OVERRIDE { | 778 const base::TimeDelta& timeout) override { |
| 779 if (queued_response_.empty()) | 779 if (queued_response_.empty()) |
| 780 return SyncWebSocket::kDisconnected; | 780 return SyncWebSocket::kDisconnected; |
| 781 *message = queued_response_.front(); | 781 *message = queued_response_.front(); |
| 782 queued_response_.pop_front(); | 782 queued_response_.pop_front(); |
| 783 return SyncWebSocket::kOk; | 783 return SyncWebSocket::kOk; |
| 784 } | 784 } |
| 785 | 785 |
| 786 virtual bool HasNextMessage() OVERRIDE { | 786 virtual bool HasNextMessage() override { |
| 787 return !queued_response_.empty(); | 787 return !queued_response_.empty(); |
| 788 } | 788 } |
| 789 | 789 |
| 790 private: | 790 private: |
| 791 bool connected_; | 791 bool connected_; |
| 792 std::list<std::string> queued_response_; | 792 std::list<std::string> queued_response_; |
| 793 }; | 793 }; |
| 794 | 794 |
| 795 } // namespace | 795 } // namespace |
| 796 | 796 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 825 listener3.VerifyCalled(); | 825 listener3.VerifyCalled(); |
| 826 } | 826 } |
| 827 | 827 |
| 828 namespace { | 828 namespace { |
| 829 | 829 |
| 830 class MockSyncWebSocket5 : public SyncWebSocket { | 830 class MockSyncWebSocket5 : public SyncWebSocket { |
| 831 public: | 831 public: |
| 832 MockSyncWebSocket5() : request_no_(0) {} | 832 MockSyncWebSocket5() : request_no_(0) {} |
| 833 virtual ~MockSyncWebSocket5() {} | 833 virtual ~MockSyncWebSocket5() {} |
| 834 | 834 |
| 835 virtual bool IsConnected() OVERRIDE { | 835 virtual bool IsConnected() override { |
| 836 return true; | 836 return true; |
| 837 } | 837 } |
| 838 | 838 |
| 839 virtual bool Connect(const GURL& url) OVERRIDE { | 839 virtual bool Connect(const GURL& url) override { |
| 840 return true; | 840 return true; |
| 841 } | 841 } |
| 842 | 842 |
| 843 virtual bool Send(const std::string& message) OVERRIDE { | 843 virtual bool Send(const std::string& message) override { |
| 844 return true; | 844 return true; |
| 845 } | 845 } |
| 846 | 846 |
| 847 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 847 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 848 std::string* message, | 848 std::string* message, |
| 849 const base::TimeDelta& timeout) OVERRIDE { | 849 const base::TimeDelta& timeout) override { |
| 850 if (request_no_ == 0) { | 850 if (request_no_ == 0) { |
| 851 *message = "{\"method\": \"m\", \"params\": {}}"; | 851 *message = "{\"method\": \"m\", \"params\": {}}"; |
| 852 } else { | 852 } else { |
| 853 *message = base::StringPrintf( | 853 *message = base::StringPrintf( |
| 854 "{\"result\": {}, \"id\": %d}", request_no_); | 854 "{\"result\": {}, \"id\": %d}", request_no_); |
| 855 } | 855 } |
| 856 request_no_++; | 856 request_no_++; |
| 857 return SyncWebSocket::kOk; | 857 return SyncWebSocket::kOk; |
| 858 } | 858 } |
| 859 | 859 |
| 860 virtual bool HasNextMessage() OVERRIDE { | 860 virtual bool HasNextMessage() override { |
| 861 return false; | 861 return false; |
| 862 } | 862 } |
| 863 | 863 |
| 864 private: | 864 private: |
| 865 int request_no_; | 865 int request_no_; |
| 866 }; | 866 }; |
| 867 | 867 |
| 868 class OtherEventListener : public DevToolsEventListener { | 868 class OtherEventListener : public DevToolsEventListener { |
| 869 public: | 869 public: |
| 870 OtherEventListener() : received_event_(false) {} | 870 OtherEventListener() : received_event_(false) {} |
| 871 virtual ~OtherEventListener() {} | 871 virtual ~OtherEventListener() {} |
| 872 | 872 |
| 873 virtual Status OnConnected(DevToolsClient* client) OVERRIDE { | 873 virtual Status OnConnected(DevToolsClient* client) override { |
| 874 return Status(kOk); | 874 return Status(kOk); |
| 875 } | 875 } |
| 876 virtual Status OnEvent(DevToolsClient* client, | 876 virtual Status OnEvent(DevToolsClient* client, |
| 877 const std::string& method, | 877 const std::string& method, |
| 878 const base::DictionaryValue& params) OVERRIDE { | 878 const base::DictionaryValue& params) override { |
| 879 received_event_ = true; | 879 received_event_ = true; |
| 880 return Status(kOk); | 880 return Status(kOk); |
| 881 } | 881 } |
| 882 | 882 |
| 883 bool received_event_; | 883 bool received_event_; |
| 884 }; | 884 }; |
| 885 | 885 |
| 886 class OnEventListener : public DevToolsEventListener { | 886 class OnEventListener : public DevToolsEventListener { |
| 887 public: | 887 public: |
| 888 OnEventListener(DevToolsClient* client, | 888 OnEventListener(DevToolsClient* client, |
| 889 OtherEventListener* other_listener) | 889 OtherEventListener* other_listener) |
| 890 : client_(client), | 890 : client_(client), |
| 891 other_listener_(other_listener) {} | 891 other_listener_(other_listener) {} |
| 892 virtual ~OnEventListener() {} | 892 virtual ~OnEventListener() {} |
| 893 | 893 |
| 894 virtual Status OnConnected(DevToolsClient* client) OVERRIDE { | 894 virtual Status OnConnected(DevToolsClient* client) override { |
| 895 EXPECT_EQ(client_, client); | 895 EXPECT_EQ(client_, client); |
| 896 return Status(kOk); | 896 return Status(kOk); |
| 897 } | 897 } |
| 898 | 898 |
| 899 virtual Status OnEvent(DevToolsClient* client, | 899 virtual Status OnEvent(DevToolsClient* client, |
| 900 const std::string& method, | 900 const std::string& method, |
| 901 const base::DictionaryValue& params) OVERRIDE { | 901 const base::DictionaryValue& params) override { |
| 902 EXPECT_EQ(client_, client); | 902 EXPECT_EQ(client_, client); |
| 903 client_->SendCommand("method", params); | 903 client_->SendCommand("method", params); |
| 904 EXPECT_TRUE(other_listener_->received_event_); | 904 EXPECT_TRUE(other_listener_->received_event_); |
| 905 return Status(kOk); | 905 return Status(kOk); |
| 906 } | 906 } |
| 907 | 907 |
| 908 private: | 908 private: |
| 909 DevToolsClient* client_; | 909 DevToolsClient* client_; |
| 910 OtherEventListener* other_listener_; | 910 OtherEventListener* other_listener_; |
| 911 }; | 911 }; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 925 EXPECT_EQ(kOk, client.SendCommand("method", params).code()); | 925 EXPECT_EQ(kOk, client.SendCommand("method", params).code()); |
| 926 } | 926 } |
| 927 | 927 |
| 928 namespace { | 928 namespace { |
| 929 | 929 |
| 930 class DisconnectedSyncWebSocket : public MockSyncWebSocket { | 930 class DisconnectedSyncWebSocket : public MockSyncWebSocket { |
| 931 public: | 931 public: |
| 932 DisconnectedSyncWebSocket() : connection_count_(0), command_count_(0) {} | 932 DisconnectedSyncWebSocket() : connection_count_(0), command_count_(0) {} |
| 933 virtual ~DisconnectedSyncWebSocket() {} | 933 virtual ~DisconnectedSyncWebSocket() {} |
| 934 | 934 |
| 935 virtual bool Connect(const GURL& url) OVERRIDE { | 935 virtual bool Connect(const GURL& url) override { |
| 936 connection_count_++; | 936 connection_count_++; |
| 937 connected_ = connection_count_ != 2; | 937 connected_ = connection_count_ != 2; |
| 938 return connected_; | 938 return connected_; |
| 939 } | 939 } |
| 940 | 940 |
| 941 virtual bool Send(const std::string& message) OVERRIDE { | 941 virtual bool Send(const std::string& message) override { |
| 942 command_count_++; | 942 command_count_++; |
| 943 if (command_count_ == 1) { | 943 if (command_count_ == 1) { |
| 944 connected_ = false; | 944 connected_ = false; |
| 945 return false; | 945 return false; |
| 946 } | 946 } |
| 947 return MockSyncWebSocket::Send(message); | 947 return MockSyncWebSocket::Send(message); |
| 948 } | 948 } |
| 949 | 949 |
| 950 private: | 950 private: |
| 951 int connection_count_; | 951 int connection_count_; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 985 } | 985 } |
| 986 | 986 |
| 987 namespace { | 987 namespace { |
| 988 | 988 |
| 989 class MockSyncWebSocket6 : public SyncWebSocket { | 989 class MockSyncWebSocket6 : public SyncWebSocket { |
| 990 public: | 990 public: |
| 991 explicit MockSyncWebSocket6(std::list<std::string>* messages) | 991 explicit MockSyncWebSocket6(std::list<std::string>* messages) |
| 992 : messages_(messages) {} | 992 : messages_(messages) {} |
| 993 virtual ~MockSyncWebSocket6() {} | 993 virtual ~MockSyncWebSocket6() {} |
| 994 | 994 |
| 995 virtual bool IsConnected() OVERRIDE { return true; } | 995 virtual bool IsConnected() override { return true; } |
| 996 | 996 |
| 997 virtual bool Connect(const GURL& url) OVERRIDE { return true; } | 997 virtual bool Connect(const GURL& url) override { return true; } |
| 998 | 998 |
| 999 virtual bool Send(const std::string& message) OVERRIDE { return true; } | 999 virtual bool Send(const std::string& message) override { return true; } |
| 1000 | 1000 |
| 1001 virtual SyncWebSocket::StatusCode ReceiveNextMessage( | 1001 virtual SyncWebSocket::StatusCode ReceiveNextMessage( |
| 1002 std::string* message, | 1002 std::string* message, |
| 1003 const base::TimeDelta& timeout) OVERRIDE { | 1003 const base::TimeDelta& timeout) override { |
| 1004 if (messages_->empty()) | 1004 if (messages_->empty()) |
| 1005 return SyncWebSocket::kDisconnected; | 1005 return SyncWebSocket::kDisconnected; |
| 1006 *message = messages_->front(); | 1006 *message = messages_->front(); |
| 1007 messages_->pop_front(); | 1007 messages_->pop_front(); |
| 1008 return SyncWebSocket::kOk; | 1008 return SyncWebSocket::kOk; |
| 1009 } | 1009 } |
| 1010 | 1010 |
| 1011 virtual bool HasNextMessage() OVERRIDE { return messages_->size(); } | 1011 virtual bool HasNextMessage() override { return messages_->size(); } |
| 1012 | 1012 |
| 1013 private: | 1013 private: |
| 1014 std::list<std::string>* messages_; | 1014 std::list<std::string>* messages_; |
| 1015 }; | 1015 }; |
| 1016 | 1016 |
| 1017 class MockDevToolsEventListener : public DevToolsEventListener { | 1017 class MockDevToolsEventListener : public DevToolsEventListener { |
| 1018 public: | 1018 public: |
| 1019 MockDevToolsEventListener() : id_(1) {} | 1019 MockDevToolsEventListener() : id_(1) {} |
| 1020 virtual ~MockDevToolsEventListener() {} | 1020 virtual ~MockDevToolsEventListener() {} |
| 1021 | 1021 |
| 1022 virtual Status OnConnected(DevToolsClient* client) OVERRIDE { | 1022 virtual Status OnConnected(DevToolsClient* client) override { |
| 1023 return Status(kOk); | 1023 return Status(kOk); |
| 1024 } | 1024 } |
| 1025 | 1025 |
| 1026 virtual Status OnEvent(DevToolsClient* client, | 1026 virtual Status OnEvent(DevToolsClient* client, |
| 1027 const std::string& method, | 1027 const std::string& method, |
| 1028 const base::DictionaryValue& params) OVERRIDE { | 1028 const base::DictionaryValue& params) override { |
| 1029 id_++; | 1029 id_++; |
| 1030 Status status = client->SendCommand("hello", params); | 1030 Status status = client->SendCommand("hello", params); |
| 1031 id_--; | 1031 id_--; |
| 1032 if (id_ == 3) { | 1032 if (id_ == 3) { |
| 1033 EXPECT_EQ(kUnexpectedAlertOpen, status.code()); | 1033 EXPECT_EQ(kUnexpectedAlertOpen, status.code()); |
| 1034 } else { | 1034 } else { |
| 1035 EXPECT_EQ(kOk, status.code()); | 1035 EXPECT_EQ(kOk, status.code()); |
| 1036 } | 1036 } |
| 1037 return Status(kOk); | 1037 return Status(kOk); |
| 1038 } | 1038 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1102 | 1102 |
| 1103 namespace { | 1103 namespace { |
| 1104 | 1104 |
| 1105 class MockCommandListener : public DevToolsEventListener { | 1105 class MockCommandListener : public DevToolsEventListener { |
| 1106 public: | 1106 public: |
| 1107 MockCommandListener() {} | 1107 MockCommandListener() {} |
| 1108 virtual ~MockCommandListener() {} | 1108 virtual ~MockCommandListener() {} |
| 1109 | 1109 |
| 1110 virtual Status OnEvent(DevToolsClient* client, | 1110 virtual Status OnEvent(DevToolsClient* client, |
| 1111 const std::string& method, | 1111 const std::string& method, |
| 1112 const base::DictionaryValue& params) OVERRIDE { | 1112 const base::DictionaryValue& params) override { |
| 1113 msgs_.push_back(method); | 1113 msgs_.push_back(method); |
| 1114 return Status(kOk); | 1114 return Status(kOk); |
| 1115 } | 1115 } |
| 1116 | 1116 |
| 1117 virtual Status OnCommandSuccess(DevToolsClient* client, | 1117 virtual Status OnCommandSuccess(DevToolsClient* client, |
| 1118 const std::string& method) OVERRIDE { | 1118 const std::string& method) override { |
| 1119 msgs_.push_back(method); | 1119 msgs_.push_back(method); |
| 1120 if (!callback_.is_null()) | 1120 if (!callback_.is_null()) |
| 1121 callback_.Run(client); | 1121 callback_.Run(client); |
| 1122 return Status(kOk); | 1122 return Status(kOk); |
| 1123 } | 1123 } |
| 1124 | 1124 |
| 1125 base::Callback<void(DevToolsClient*)> callback_; | 1125 base::Callback<void(DevToolsClient*)> callback_; |
| 1126 std::list<std::string> msgs_; | 1126 std::list<std::string> msgs_; |
| 1127 }; | 1127 }; |
| 1128 | 1128 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1143 client.AddListener(&listener1); | 1143 client.AddListener(&listener1); |
| 1144 client.AddListener(&listener2); | 1144 client.AddListener(&listener2); |
| 1145 msgs.push_back("{\"id\": 1, \"result\": {}}"); | 1145 msgs.push_back("{\"id\": 1, \"result\": {}}"); |
| 1146 msgs.push_back("{\"method\": \"event\", \"params\": {}}"); | 1146 msgs.push_back("{\"method\": \"event\", \"params\": {}}"); |
| 1147 base::DictionaryValue params; | 1147 base::DictionaryValue params; |
| 1148 ASSERT_EQ(kOk, client.SendCommand("cmd", params).code()); | 1148 ASSERT_EQ(kOk, client.SendCommand("cmd", params).code()); |
| 1149 ASSERT_EQ(2u, listener2.msgs_.size()); | 1149 ASSERT_EQ(2u, listener2.msgs_.size()); |
| 1150 ASSERT_EQ("cmd", listener2.msgs_.front()); | 1150 ASSERT_EQ("cmd", listener2.msgs_.front()); |
| 1151 ASSERT_EQ("event", listener2.msgs_.back()); | 1151 ASSERT_EQ("event", listener2.msgs_.back()); |
| 1152 } | 1152 } |
| OLD | NEW |