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

Side by Side Diff: content/browser/shared_worker/shared_worker_service_impl_unittest.cc

Issue 1874893002: Convert //content/browser from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/shared_worker/shared_worker_service_impl.h"
6
5 #include <stddef.h> 7 #include <stddef.h>
6 8
7 #include <map> 9 #include <map>
10 #include <memory>
8 #include <set> 11 #include <set>
9 #include <vector> 12 #include <vector>
10 13
11 #include "base/atomic_sequence_num.h" 14 #include "base/atomic_sequence_num.h"
12 #include "base/macros.h" 15 #include "base/macros.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/scoped_vector.h" 16 #include "base/memory/scoped_vector.h"
15 #include "base/strings/string16.h" 17 #include "base/strings/string16.h"
16 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
17 #include "base/synchronization/lock.h" 19 #include "base/synchronization/lock.h"
18 #include "content/browser/message_port_message_filter.h" 20 #include "content/browser/message_port_message_filter.h"
19 #include "content/browser/shared_worker/shared_worker_message_filter.h" 21 #include "content/browser/shared_worker/shared_worker_message_filter.h"
20 #include "content/browser/shared_worker/shared_worker_service_impl.h"
21 #include "content/browser/shared_worker/worker_storage_partition.h" 22 #include "content/browser/shared_worker/worker_storage_partition.h"
22 #include "content/common/message_port_messages.h" 23 #include "content/common/message_port_messages.h"
23 #include "content/common/view_messages.h" 24 #include "content/common/view_messages.h"
24 #include "content/common/worker_messages.h" 25 #include "content/common/worker_messages.h"
25 #include "content/public/test/test_browser_context.h" 26 #include "content/public/test/test_browser_context.h"
26 #include "content/public/test/test_browser_thread_bundle.h" 27 #include "content/public/test/test_browser_thread_bundle.h"
27 #include "content/public/test/test_utils.h" 28 #include "content/public/test/test_utils.h"
28 #include "ipc/ipc_sync_message.h" 29 #include "ipc/ipc_sync_message.h"
29 #include "testing/gtest/include/gtest/gtest.h" 30 #include "testing/gtest/include/gtest/gtest.h"
30 31
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 s_worker_dependency_added_ids_ = added_ids; 77 s_worker_dependency_added_ids_ = added_ids;
77 s_worker_dependency_removed_ids_ = removed_ids; 78 s_worker_dependency_removed_ids_ = removed_ids;
78 } 79 }
79 static bool MockTryIncrementWorkerRefCount(int worker_process_id) { 80 static bool MockTryIncrementWorkerRefCount(int worker_process_id) {
80 base::AutoLock lock(s_lock_); 81 base::AutoLock lock(s_lock_);
81 return s_running_process_id_set_.find(worker_process_id) != 82 return s_running_process_id_set_.find(worker_process_id) !=
82 s_running_process_id_set_.end(); 83 s_running_process_id_set_.end();
83 } 84 }
84 85
85 TestBrowserThreadBundle browser_thread_bundle_; 86 TestBrowserThreadBundle browser_thread_bundle_;
86 scoped_ptr<TestBrowserContext> browser_context_; 87 std::unique_ptr<TestBrowserContext> browser_context_;
87 scoped_ptr<WorkerStoragePartition> partition_; 88 std::unique_ptr<WorkerStoragePartition> partition_;
88 static int s_update_worker_dependency_call_count_; 89 static int s_update_worker_dependency_call_count_;
89 static std::vector<int> s_worker_dependency_added_ids_; 90 static std::vector<int> s_worker_dependency_added_ids_;
90 static std::vector<int> s_worker_dependency_removed_ids_; 91 static std::vector<int> s_worker_dependency_removed_ids_;
91 static base::Lock s_lock_; 92 static base::Lock s_lock_;
92 static std::set<int> s_running_process_id_set_; 93 static std::set<int> s_running_process_id_set_;
93 DISALLOW_COPY_AND_ASSIGN(SharedWorkerServiceImplTest); 94 DISALLOW_COPY_AND_ASSIGN(SharedWorkerServiceImplTest);
94 }; 95 };
95 96
96 // static 97 // static
97 int SharedWorkerServiceImplTest::s_update_worker_dependency_call_count_; 98 int SharedWorkerServiceImplTest::s_update_worker_dependency_call_count_;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 SharedWorkerServiceImplTest::RegisterRunningProcessID(process_id); 182 SharedWorkerServiceImplTest::RegisterRunningProcessID(process_id);
182 } 183 }
183 184
184 ~MockRendererProcessHost() { 185 ~MockRendererProcessHost() {
185 SharedWorkerServiceImplTest::UnregisterRunningProcessID(process_id_); 186 SharedWorkerServiceImplTest::UnregisterRunningProcessID(process_id_);
186 message_filter_->Close(); 187 message_filter_->Close();
187 worker_filter_->Close(); 188 worker_filter_->Close();
188 } 189 }
189 190
190 bool OnMessageReceived(IPC::Message* message) { 191 bool OnMessageReceived(IPC::Message* message) {
191 scoped_ptr<IPC::Message> msg(message); 192 std::unique_ptr<IPC::Message> msg(message);
192 const bool ret = message_filter_->OnMessageReceived(*message) || 193 const bool ret = message_filter_->OnMessageReceived(*message) ||
193 worker_filter_->OnMessageReceived(*message); 194 worker_filter_->OnMessageReceived(*message);
194 if (message->is_sync()) { 195 if (message->is_sync()) {
195 CHECK(!queued_messages_.empty()); 196 CHECK(!queued_messages_.empty());
196 const IPC::Message* response_msg = queued_messages_.back(); 197 const IPC::Message* response_msg = queued_messages_.back();
197 IPC::SyncMessage* sync_msg = static_cast<IPC::SyncMessage*>(message); 198 IPC::SyncMessage* sync_msg = static_cast<IPC::SyncMessage*>(message);
198 scoped_ptr<IPC::MessageReplyDeserializer> reply_serializer( 199 std::unique_ptr<IPC::MessageReplyDeserializer> reply_serializer(
199 sync_msg->GetReplyDeserializer()); 200 sync_msg->GetReplyDeserializer());
200 bool result = reply_serializer->SerializeOutputParameters(*response_msg); 201 bool result = reply_serializer->SerializeOutputParameters(*response_msg);
201 CHECK(result); 202 CHECK(result);
202 queued_messages_.pop_back(); 203 queued_messages_.pop_back();
203 } 204 }
204 return ret; 205 return ret;
205 } 206 }
206 207
207 size_t QueuedMessageCount() const { return queued_messages_.size(); } 208 size_t QueuedMessageCount() const { return queued_messages_.size(); }
208 209
209 scoped_ptr<IPC::Message> PopMessage() { 210 std::unique_ptr<IPC::Message> PopMessage() {
210 CHECK(queued_messages_.size()); 211 CHECK(queued_messages_.size());
211 scoped_ptr<IPC::Message> msg(*queued_messages_.begin()); 212 std::unique_ptr<IPC::Message> msg(*queued_messages_.begin());
212 queued_messages_.weak_erase(queued_messages_.begin()); 213 queued_messages_.weak_erase(queued_messages_.begin());
213 return msg; 214 return msg;
214 } 215 }
215 216
216 void FastShutdownIfPossible() { 217 void FastShutdownIfPossible() {
217 SharedWorkerServiceImplTest::UnregisterRunningProcessID(process_id_); 218 SharedWorkerServiceImplTest::UnregisterRunningProcessID(process_id_);
218 } 219 }
219 220
220 private: 221 private:
221 const int process_id_; 222 const int process_id_;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 int local_port_id_; 322 int local_port_id_;
322 ViewHostMsg_CreateWorker_Reply create_worker_reply_; 323 ViewHostMsg_CreateWorker_Reply create_worker_reply_;
323 }; 324 };
324 325
325 void CheckWorkerProcessMsgCreateWorker( 326 void CheckWorkerProcessMsgCreateWorker(
326 MockRendererProcessHost* renderer_host, 327 MockRendererProcessHost* renderer_host,
327 const std::string& expected_url, 328 const std::string& expected_url,
328 const std::string& expected_name, 329 const std::string& expected_name,
329 blink::WebContentSecurityPolicyType expected_security_policy_type, 330 blink::WebContentSecurityPolicyType expected_security_policy_type,
330 int* route_id) { 331 int* route_id) {
331 scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); 332 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage());
332 EXPECT_EQ(WorkerProcessMsg_CreateWorker::ID, msg->type()); 333 EXPECT_EQ(WorkerProcessMsg_CreateWorker::ID, msg->type());
333 base::Tuple<WorkerProcessMsg_CreateWorker_Params> param; 334 base::Tuple<WorkerProcessMsg_CreateWorker_Params> param;
334 EXPECT_TRUE(WorkerProcessMsg_CreateWorker::Read(msg.get(), &param)); 335 EXPECT_TRUE(WorkerProcessMsg_CreateWorker::Read(msg.get(), &param));
335 EXPECT_EQ(GURL(expected_url), base::get<0>(param).url); 336 EXPECT_EQ(GURL(expected_url), base::get<0>(param).url);
336 EXPECT_EQ(base::ASCIIToUTF16(expected_name), base::get<0>(param).name); 337 EXPECT_EQ(base::ASCIIToUTF16(expected_name), base::get<0>(param).name);
337 EXPECT_EQ(expected_security_policy_type, 338 EXPECT_EQ(expected_security_policy_type,
338 base::get<0>(param).security_policy_type); 339 base::get<0>(param).security_policy_type);
339 *route_id = base::get<0>(param).route_id; 340 *route_id = base::get<0>(param).route_id;
340 } 341 }
341 342
342 void CheckViewMsgWorkerCreated(MockRendererProcessHost* renderer_host, 343 void CheckViewMsgWorkerCreated(MockRendererProcessHost* renderer_host,
343 MockSharedWorkerConnector* connector) { 344 MockSharedWorkerConnector* connector) {
344 scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); 345 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage());
345 EXPECT_EQ(ViewMsg_WorkerCreated::ID, msg->type()); 346 EXPECT_EQ(ViewMsg_WorkerCreated::ID, msg->type());
346 EXPECT_EQ(connector->route_id(), msg->routing_id()); 347 EXPECT_EQ(connector->route_id(), msg->routing_id());
347 } 348 }
348 349
349 void CheckMessagePortMsgMessagesQueued(MockRendererProcessHost* renderer_host, 350 void CheckMessagePortMsgMessagesQueued(MockRendererProcessHost* renderer_host,
350 MockSharedWorkerConnector* connector) { 351 MockSharedWorkerConnector* connector) {
351 scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); 352 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage());
352 EXPECT_EQ(MessagePortMsg_MessagesQueued::ID, msg->type()); 353 EXPECT_EQ(MessagePortMsg_MessagesQueued::ID, msg->type());
353 EXPECT_EQ(connector->temporary_remote_port_route_id(), msg->routing_id()); 354 EXPECT_EQ(connector->temporary_remote_port_route_id(), msg->routing_id());
354 } 355 }
355 356
356 void CheckWorkerMsgConnect(MockRendererProcessHost* renderer_host, 357 void CheckWorkerMsgConnect(MockRendererProcessHost* renderer_host,
357 int expected_msg_route_id, 358 int expected_msg_route_id,
358 int expected_sent_message_port_id, 359 int expected_sent_message_port_id,
359 int* routing_id) { 360 int* routing_id) {
360 scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); 361 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage());
361 EXPECT_EQ(WorkerMsg_Connect::ID, msg->type()); 362 EXPECT_EQ(WorkerMsg_Connect::ID, msg->type());
362 EXPECT_EQ(expected_msg_route_id, msg->routing_id()); 363 EXPECT_EQ(expected_msg_route_id, msg->routing_id());
363 WorkerMsg_Connect::Param params; 364 WorkerMsg_Connect::Param params;
364 EXPECT_TRUE(WorkerMsg_Connect::Read(msg.get(), &params)); 365 EXPECT_TRUE(WorkerMsg_Connect::Read(msg.get(), &params));
365 int port_id = base::get<0>(params); 366 int port_id = base::get<0>(params);
366 *routing_id = base::get<1>(params); 367 *routing_id = base::get<1>(params);
367 EXPECT_EQ(expected_sent_message_port_id, port_id); 368 EXPECT_EQ(expected_sent_message_port_id, port_id);
368 } 369 }
369 370
370 void CheckMessagePortMsgMessage(MockRendererProcessHost* renderer_host, 371 void CheckMessagePortMsgMessage(MockRendererProcessHost* renderer_host,
371 int expected_msg_route_id, 372 int expected_msg_route_id,
372 std::string expected_data) { 373 std::string expected_data) {
373 scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); 374 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage());
374 EXPECT_EQ(MessagePortMsg_Message::ID, msg->type()); 375 EXPECT_EQ(MessagePortMsg_Message::ID, msg->type());
375 EXPECT_EQ(expected_msg_route_id, msg->routing_id()); 376 EXPECT_EQ(expected_msg_route_id, msg->routing_id());
376 MessagePortMsg_Message::Param params; 377 MessagePortMsg_Message::Param params;
377 EXPECT_TRUE(MessagePortMsg_Message::Read(msg.get(), &params)); 378 EXPECT_TRUE(MessagePortMsg_Message::Read(msg.get(), &params));
378 base::string16 data = base::get<0>(params).message_as_string; 379 base::string16 data = base::get<0>(params).message_as_string;
379 EXPECT_EQ(base::ASCIIToUTF16(expected_data), data); 380 EXPECT_EQ(base::ASCIIToUTF16(expected_data), data);
380 } 381 }
381 382
382 void CheckViewMsgWorkerConnected(MockRendererProcessHost* renderer_host, 383 void CheckViewMsgWorkerConnected(MockRendererProcessHost* renderer_host,
383 MockSharedWorkerConnector* connector) { 384 MockSharedWorkerConnector* connector) {
384 scoped_ptr<IPC::Message> msg(renderer_host->PopMessage()); 385 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage());
385 EXPECT_EQ(ViewMsg_WorkerConnected::ID, msg->type()); 386 EXPECT_EQ(ViewMsg_WorkerConnected::ID, msg->type());
386 EXPECT_EQ(connector->route_id(), msg->routing_id()); 387 EXPECT_EQ(connector->route_id(), msg->routing_id());
387 } 388 }
388 389
389 } // namespace 390 } // namespace
390 391
391 TEST_F(SharedWorkerServiceImplTest, BasicTest) { 392 TEST_F(SharedWorkerServiceImplTest, BasicTest) {
392 scoped_ptr<MockRendererProcessHost> renderer_host( 393 std::unique_ptr<MockRendererProcessHost> renderer_host(
393 new MockRendererProcessHost(kProcessIDs[0], 394 new MockRendererProcessHost(kProcessIDs[0],
394 browser_context_->GetResourceContext(), 395 browser_context_->GetResourceContext(),
395 *partition_.get())); 396 *partition_.get()));
396 scoped_ptr<MockSharedWorkerConnector> connector( 397 std::unique_ptr<MockSharedWorkerConnector> connector(
397 new MockSharedWorkerConnector(renderer_host.get())); 398 new MockSharedWorkerConnector(renderer_host.get()));
398 int worker_route_id; 399 int worker_route_id;
399 int worker_msg_port_route_id; 400 int worker_msg_port_route_id;
400 401
401 // SharedWorkerConnector creates two message ports and sends 402 // SharedWorkerConnector creates two message ports and sends
402 // ViewHostMsg_CreateWorker. 403 // ViewHostMsg_CreateWorker.
403 connector->Create("http://example.com/w.js", 404 connector->Create("http://example.com/w.js",
404 "name", 405 "name",
405 kDocumentIDs[0], 406 kDocumentIDs[0],
406 kRenderFrameRouteIDs[0]); 407 kRenderFrameRouteIDs[0]);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 EXPECT_EQ(1U, renderer_host->QueuedMessageCount()); 480 EXPECT_EQ(1U, renderer_host->QueuedMessageCount());
480 CheckMessagePortMsgMessage( 481 CheckMessagePortMsgMessage(
481 renderer_host.get(), connector->local_port_route_id(), "test2"); 482 renderer_host.get(), connector->local_port_route_id(), "test2");
482 483
483 // UpdateWorkerDependency should not be called. 484 // UpdateWorkerDependency should not be called.
484 EXPECT_EQ(0, s_update_worker_dependency_call_count_); 485 EXPECT_EQ(0, s_update_worker_dependency_call_count_);
485 } 486 }
486 487
487 TEST_F(SharedWorkerServiceImplTest, TwoRendererTest) { 488 TEST_F(SharedWorkerServiceImplTest, TwoRendererTest) {
488 // The first renderer host. 489 // The first renderer host.
489 scoped_ptr<MockRendererProcessHost> renderer_host0( 490 std::unique_ptr<MockRendererProcessHost> renderer_host0(
490 new MockRendererProcessHost(kProcessIDs[0], 491 new MockRendererProcessHost(kProcessIDs[0],
491 browser_context_->GetResourceContext(), 492 browser_context_->GetResourceContext(),
492 *partition_.get())); 493 *partition_.get()));
493 scoped_ptr<MockSharedWorkerConnector> connector0( 494 std::unique_ptr<MockSharedWorkerConnector> connector0(
494 new MockSharedWorkerConnector(renderer_host0.get())); 495 new MockSharedWorkerConnector(renderer_host0.get()));
495 int worker_route_id; 496 int worker_route_id;
496 int worker_msg_port_route_id1; 497 int worker_msg_port_route_id1;
497 498
498 // SharedWorkerConnector creates two message ports and sends 499 // SharedWorkerConnector creates two message ports and sends
499 // ViewHostMsg_CreateWorker. 500 // ViewHostMsg_CreateWorker.
500 connector0->Create("http://example.com/w.js", 501 connector0->Create("http://example.com/w.js",
501 "name", 502 "name",
502 kDocumentIDs[0], 503 kDocumentIDs[0],
503 kRenderFrameRouteIDs[0]); 504 kRenderFrameRouteIDs[0]);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 const std::vector<TransferredMessagePort> empty_ports; 572 const std::vector<TransferredMessagePort> empty_ports;
572 EXPECT_TRUE( 573 EXPECT_TRUE(
573 renderer_host0->OnMessageReceived(new MessagePortHostMsg_PostMessage( 574 renderer_host0->OnMessageReceived(new MessagePortHostMsg_PostMessage(
574 connector0->remote_port_id(), 575 connector0->remote_port_id(),
575 MessagePortMessage(base::ASCIIToUTF16("test2")), empty_ports))); 576 MessagePortMessage(base::ASCIIToUTF16("test2")), empty_ports)));
576 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); 577 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount());
577 CheckMessagePortMsgMessage( 578 CheckMessagePortMsgMessage(
578 renderer_host0.get(), connector0->local_port_route_id(), "test2"); 579 renderer_host0.get(), connector0->local_port_route_id(), "test2");
579 580
580 // The second renderer host. 581 // The second renderer host.
581 scoped_ptr<MockRendererProcessHost> renderer_host1( 582 std::unique_ptr<MockRendererProcessHost> renderer_host1(
582 new MockRendererProcessHost(kProcessIDs[1], 583 new MockRendererProcessHost(kProcessIDs[1],
583 browser_context_->GetResourceContext(), 584 browser_context_->GetResourceContext(),
584 *partition_.get())); 585 *partition_.get()));
585 scoped_ptr<MockSharedWorkerConnector> connector1( 586 std::unique_ptr<MockSharedWorkerConnector> connector1(
586 new MockSharedWorkerConnector(renderer_host1.get())); 587 new MockSharedWorkerConnector(renderer_host1.get()));
587 int worker_msg_port_route_id2; 588 int worker_msg_port_route_id2;
588 589
589 // UpdateWorkerDependency should not be called yet. 590 // UpdateWorkerDependency should not be called yet.
590 EXPECT_EQ(0, s_update_worker_dependency_call_count_); 591 EXPECT_EQ(0, s_update_worker_dependency_call_count_);
591 592
592 // SharedWorkerConnector creates two message ports and sends 593 // SharedWorkerConnector creates two message ports and sends
593 // ViewHostMsg_CreateWorker. 594 // ViewHostMsg_CreateWorker.
594 connector1->Create("http://example.com/w.js", 595 connector1->Create("http://example.com/w.js",
595 "name", 596 "name",
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 renderer_host1.reset(); 661 renderer_host1.reset();
661 // UpdateWorkerDependency should be called. 662 // UpdateWorkerDependency should be called.
662 EXPECT_EQ(2, s_update_worker_dependency_call_count_); 663 EXPECT_EQ(2, s_update_worker_dependency_call_count_);
663 EXPECT_EQ(0U, s_worker_dependency_added_ids_.size()); 664 EXPECT_EQ(0U, s_worker_dependency_added_ids_.size());
664 EXPECT_EQ(1U, s_worker_dependency_removed_ids_.size()); 665 EXPECT_EQ(1U, s_worker_dependency_removed_ids_.size());
665 EXPECT_EQ(kProcessIDs[0], s_worker_dependency_removed_ids_[0]); 666 EXPECT_EQ(kProcessIDs[0], s_worker_dependency_removed_ids_[0]);
666 } 667 }
667 668
668 TEST_F(SharedWorkerServiceImplTest, CreateWorkerTest) { 669 TEST_F(SharedWorkerServiceImplTest, CreateWorkerTest) {
669 // The first renderer host. 670 // The first renderer host.
670 scoped_ptr<MockRendererProcessHost> renderer_host0( 671 std::unique_ptr<MockRendererProcessHost> renderer_host0(
671 new MockRendererProcessHost(kProcessIDs[0], 672 new MockRendererProcessHost(kProcessIDs[0],
672 browser_context_->GetResourceContext(), 673 browser_context_->GetResourceContext(),
673 *partition_.get())); 674 *partition_.get()));
674 // The second renderer host. 675 // The second renderer host.
675 scoped_ptr<MockRendererProcessHost> renderer_host1( 676 std::unique_ptr<MockRendererProcessHost> renderer_host1(
676 new MockRendererProcessHost(kProcessIDs[1], 677 new MockRendererProcessHost(kProcessIDs[1],
677 browser_context_->GetResourceContext(), 678 browser_context_->GetResourceContext(),
678 *partition_.get())); 679 *partition_.get()));
679 int worker_route_id; 680 int worker_route_id;
680 681
681 // Normal case. 682 // Normal case.
682 { 683 {
683 scoped_ptr<MockSharedWorkerConnector> connector0( 684 std::unique_ptr<MockSharedWorkerConnector> connector0(
684 new MockSharedWorkerConnector(renderer_host0.get())); 685 new MockSharedWorkerConnector(renderer_host0.get()));
685 scoped_ptr<MockSharedWorkerConnector> connector1( 686 std::unique_ptr<MockSharedWorkerConnector> connector1(
686 new MockSharedWorkerConnector(renderer_host1.get())); 687 new MockSharedWorkerConnector(renderer_host1.get()));
687 connector0->Create("http://example.com/w1.js", 688 connector0->Create("http://example.com/w1.js",
688 "name1", 689 "name1",
689 kDocumentIDs[0], 690 kDocumentIDs[0],
690 kRenderFrameRouteIDs[0]); 691 kRenderFrameRouteIDs[0]);
691 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 692 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
692 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 693 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
693 RunAllPendingInMessageLoop(); 694 RunAllPendingInMessageLoop();
694 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 695 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
695 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 696 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
696 "http://example.com/w1.js", 697 "http://example.com/w1.js",
697 "name1", 698 "name1",
698 blink::WebContentSecurityPolicyTypeReport, 699 blink::WebContentSecurityPolicyTypeReport,
699 &worker_route_id); 700 &worker_route_id);
700 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get()); 701 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
701 connector1->Create("http://example.com/w1.js", 702 connector1->Create("http://example.com/w1.js",
702 "name1", 703 "name1",
703 kDocumentIDs[1], 704 kDocumentIDs[1],
704 kRenderFrameRouteIDs[1]); 705 kRenderFrameRouteIDs[1]);
705 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id()); 706 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
706 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 707 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
707 RunAllPendingInMessageLoop(); 708 RunAllPendingInMessageLoop();
708 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount()); 709 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount());
709 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get()); 710 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
710 } 711 }
711 712
712 // Normal case (URL mismatch). 713 // Normal case (URL mismatch).
713 { 714 {
714 scoped_ptr<MockSharedWorkerConnector> connector0( 715 std::unique_ptr<MockSharedWorkerConnector> connector0(
715 new MockSharedWorkerConnector(renderer_host0.get())); 716 new MockSharedWorkerConnector(renderer_host0.get()));
716 scoped_ptr<MockSharedWorkerConnector> connector1( 717 std::unique_ptr<MockSharedWorkerConnector> connector1(
717 new MockSharedWorkerConnector(renderer_host1.get())); 718 new MockSharedWorkerConnector(renderer_host1.get()));
718 connector0->Create("http://example.com/w2.js", 719 connector0->Create("http://example.com/w2.js",
719 "name2", 720 "name2",
720 kDocumentIDs[0], 721 kDocumentIDs[0],
721 kRenderFrameRouteIDs[0]); 722 kRenderFrameRouteIDs[0]);
722 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 723 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
723 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 724 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
724 RunAllPendingInMessageLoop(); 725 RunAllPendingInMessageLoop();
725 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 726 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
726 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 727 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
727 "http://example.com/w2.js", 728 "http://example.com/w2.js",
728 "name2", 729 "name2",
729 blink::WebContentSecurityPolicyTypeReport, 730 blink::WebContentSecurityPolicyTypeReport,
730 &worker_route_id); 731 &worker_route_id);
731 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get()); 732 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
732 connector1->Create("http://example.com/w2x.js", 733 connector1->Create("http://example.com/w2x.js",
733 "name2", 734 "name2",
734 kDocumentIDs[1], 735 kDocumentIDs[1],
735 kRenderFrameRouteIDs[1]); 736 kRenderFrameRouteIDs[1]);
736 EXPECT_EQ(MSG_ROUTING_NONE, connector1->route_id()); 737 EXPECT_EQ(MSG_ROUTING_NONE, connector1->route_id());
737 EXPECT_EQ(blink::WebWorkerCreationErrorURLMismatch, 738 EXPECT_EQ(blink::WebWorkerCreationErrorURLMismatch,
738 connector1->creation_error()); 739 connector1->creation_error());
739 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 740 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
740 RunAllPendingInMessageLoop(); 741 RunAllPendingInMessageLoop();
741 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 742 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
742 } 743 }
743 744
744 // Pending case. 745 // Pending case.
745 { 746 {
746 scoped_ptr<MockSharedWorkerConnector> connector0( 747 std::unique_ptr<MockSharedWorkerConnector> connector0(
747 new MockSharedWorkerConnector(renderer_host0.get())); 748 new MockSharedWorkerConnector(renderer_host0.get()));
748 scoped_ptr<MockSharedWorkerConnector> connector1( 749 std::unique_ptr<MockSharedWorkerConnector> connector1(
749 new MockSharedWorkerConnector(renderer_host1.get())); 750 new MockSharedWorkerConnector(renderer_host1.get()));
750 connector0->Create("http://example.com/w3.js", 751 connector0->Create("http://example.com/w3.js",
751 "name3", 752 "name3",
752 kDocumentIDs[0], 753 kDocumentIDs[0],
753 kRenderFrameRouteIDs[0]); 754 kRenderFrameRouteIDs[0]);
754 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 755 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
755 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 756 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
756 connector1->Create("http://example.com/w3.js", 757 connector1->Create("http://example.com/w3.js",
757 "name3", 758 "name3",
758 kDocumentIDs[1], 759 kDocumentIDs[1],
759 kRenderFrameRouteIDs[1]); 760 kRenderFrameRouteIDs[1]);
760 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id()); 761 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
761 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 762 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
762 RunAllPendingInMessageLoop(); 763 RunAllPendingInMessageLoop();
763 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 764 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
764 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 765 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
765 "http://example.com/w3.js", 766 "http://example.com/w3.js",
766 "name3", 767 "name3",
767 blink::WebContentSecurityPolicyTypeReport, 768 blink::WebContentSecurityPolicyTypeReport,
768 &worker_route_id); 769 &worker_route_id);
769 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get()); 770 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
770 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount()); 771 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount());
771 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get()); 772 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
772 } 773 }
773 774
774 // Pending case (URL mismatch). 775 // Pending case (URL mismatch).
775 { 776 {
776 scoped_ptr<MockSharedWorkerConnector> connector0( 777 std::unique_ptr<MockSharedWorkerConnector> connector0(
777 new MockSharedWorkerConnector(renderer_host0.get())); 778 new MockSharedWorkerConnector(renderer_host0.get()));
778 scoped_ptr<MockSharedWorkerConnector> connector1( 779 std::unique_ptr<MockSharedWorkerConnector> connector1(
779 new MockSharedWorkerConnector(renderer_host1.get())); 780 new MockSharedWorkerConnector(renderer_host1.get()));
780 connector0->Create("http://example.com/w4.js", 781 connector0->Create("http://example.com/w4.js",
781 "name4", 782 "name4",
782 kDocumentIDs[0], 783 kDocumentIDs[0],
783 kRenderFrameRouteIDs[0]); 784 kRenderFrameRouteIDs[0]);
784 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 785 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
785 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 786 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
786 connector1->Create("http://example.com/w4x.js", 787 connector1->Create("http://example.com/w4x.js",
787 "name4", 788 "name4",
788 kDocumentIDs[1], 789 kDocumentIDs[1],
789 kRenderFrameRouteIDs[1]); 790 kRenderFrameRouteIDs[1]);
790 EXPECT_EQ(MSG_ROUTING_NONE, connector1->route_id()); 791 EXPECT_EQ(MSG_ROUTING_NONE, connector1->route_id());
791 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 792 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
792 RunAllPendingInMessageLoop(); 793 RunAllPendingInMessageLoop();
793 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 794 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
794 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 795 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
795 "http://example.com/w4.js", 796 "http://example.com/w4.js",
796 "name4", 797 "name4",
797 blink::WebContentSecurityPolicyTypeReport, 798 blink::WebContentSecurityPolicyTypeReport,
798 &worker_route_id); 799 &worker_route_id);
799 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get()); 800 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
800 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 801 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
801 } 802 }
802 } 803 }
803 804
804 TEST_F(SharedWorkerServiceImplTest, CreateWorkerRaceTest) { 805 TEST_F(SharedWorkerServiceImplTest, CreateWorkerRaceTest) {
805 // Create three renderer hosts. 806 // Create three renderer hosts.
806 scoped_ptr<MockRendererProcessHost> renderer_host0( 807 std::unique_ptr<MockRendererProcessHost> renderer_host0(
807 new MockRendererProcessHost(kProcessIDs[0], 808 new MockRendererProcessHost(kProcessIDs[0],
808 browser_context_->GetResourceContext(), 809 browser_context_->GetResourceContext(),
809 *partition_.get())); 810 *partition_.get()));
810 scoped_ptr<MockRendererProcessHost> renderer_host1( 811 std::unique_ptr<MockRendererProcessHost> renderer_host1(
811 new MockRendererProcessHost(kProcessIDs[1], 812 new MockRendererProcessHost(kProcessIDs[1],
812 browser_context_->GetResourceContext(), 813 browser_context_->GetResourceContext(),
813 *partition_.get())); 814 *partition_.get()));
814 scoped_ptr<MockRendererProcessHost> renderer_host2( 815 std::unique_ptr<MockRendererProcessHost> renderer_host2(
815 new MockRendererProcessHost(kProcessIDs[2], 816 new MockRendererProcessHost(kProcessIDs[2],
816 browser_context_->GetResourceContext(), 817 browser_context_->GetResourceContext(),
817 *partition_.get())); 818 *partition_.get()));
818 int worker_route_id; 819 int worker_route_id;
819 820
820 scoped_ptr<MockSharedWorkerConnector> connector0( 821 std::unique_ptr<MockSharedWorkerConnector> connector0(
821 new MockSharedWorkerConnector(renderer_host0.get())); 822 new MockSharedWorkerConnector(renderer_host0.get()));
822 scoped_ptr<MockSharedWorkerConnector> connector1( 823 std::unique_ptr<MockSharedWorkerConnector> connector1(
823 new MockSharedWorkerConnector(renderer_host1.get())); 824 new MockSharedWorkerConnector(renderer_host1.get()));
824 scoped_ptr<MockSharedWorkerConnector> connector2( 825 std::unique_ptr<MockSharedWorkerConnector> connector2(
825 new MockSharedWorkerConnector(renderer_host2.get())); 826 new MockSharedWorkerConnector(renderer_host2.get()));
826 connector0->Create("http://example.com/w1.js", 827 connector0->Create("http://example.com/w1.js",
827 "name1", 828 "name1",
828 kDocumentIDs[0], 829 kDocumentIDs[0],
829 kRenderFrameRouteIDs[0]); 830 kRenderFrameRouteIDs[0]);
830 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 831 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
831 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 832 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
832 RunAllPendingInMessageLoop(); 833 RunAllPendingInMessageLoop();
833 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 834 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
834 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 835 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
(...skipping 25 matching lines...) Expand all
860 kRenderFrameRouteIDs[2]); 861 kRenderFrameRouteIDs[2]);
861 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id()); 862 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id());
862 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount()); 863 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount());
863 RunAllPendingInMessageLoop(); 864 RunAllPendingInMessageLoop();
864 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount()); 865 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount());
865 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get()); 866 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get());
866 } 867 }
867 868
868 TEST_F(SharedWorkerServiceImplTest, CreateWorkerRaceTest2) { 869 TEST_F(SharedWorkerServiceImplTest, CreateWorkerRaceTest2) {
869 // Create three renderer hosts. 870 // Create three renderer hosts.
870 scoped_ptr<MockRendererProcessHost> renderer_host0( 871 std::unique_ptr<MockRendererProcessHost> renderer_host0(
871 new MockRendererProcessHost(kProcessIDs[0], 872 new MockRendererProcessHost(kProcessIDs[0],
872 browser_context_->GetResourceContext(), 873 browser_context_->GetResourceContext(),
873 *partition_.get())); 874 *partition_.get()));
874 scoped_ptr<MockRendererProcessHost> renderer_host1( 875 std::unique_ptr<MockRendererProcessHost> renderer_host1(
875 new MockRendererProcessHost(kProcessIDs[1], 876 new MockRendererProcessHost(kProcessIDs[1],
876 browser_context_->GetResourceContext(), 877 browser_context_->GetResourceContext(),
877 *partition_.get())); 878 *partition_.get()));
878 scoped_ptr<MockRendererProcessHost> renderer_host2( 879 std::unique_ptr<MockRendererProcessHost> renderer_host2(
879 new MockRendererProcessHost(kProcessIDs[2], 880 new MockRendererProcessHost(kProcessIDs[2],
880 browser_context_->GetResourceContext(), 881 browser_context_->GetResourceContext(),
881 *partition_.get())); 882 *partition_.get()));
882 int worker_route_id; 883 int worker_route_id;
883 884
884 scoped_ptr<MockSharedWorkerConnector> connector0( 885 std::unique_ptr<MockSharedWorkerConnector> connector0(
885 new MockSharedWorkerConnector(renderer_host0.get())); 886 new MockSharedWorkerConnector(renderer_host0.get()));
886 scoped_ptr<MockSharedWorkerConnector> connector1( 887 std::unique_ptr<MockSharedWorkerConnector> connector1(
887 new MockSharedWorkerConnector(renderer_host1.get())); 888 new MockSharedWorkerConnector(renderer_host1.get()));
888 scoped_ptr<MockSharedWorkerConnector> connector2( 889 std::unique_ptr<MockSharedWorkerConnector> connector2(
889 new MockSharedWorkerConnector(renderer_host2.get())); 890 new MockSharedWorkerConnector(renderer_host2.get()));
890 connector0->Create("http://example.com/w1.js", 891 connector0->Create("http://example.com/w1.js",
891 "name1", 892 "name1",
892 kDocumentIDs[0], 893 kDocumentIDs[0],
893 kRenderFrameRouteIDs[0]); 894 kRenderFrameRouteIDs[0]);
894 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 895 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
895 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 896 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
896 renderer_host0->FastShutdownIfPossible(); 897 renderer_host0->FastShutdownIfPossible();
897 898
898 connector1->Create("http://example.com/w1.js", 899 connector1->Create("http://example.com/w1.js",
(...skipping 16 matching lines...) Expand all
915 kDocumentIDs[2], 916 kDocumentIDs[2],
916 kRenderFrameRouteIDs[2]); 917 kRenderFrameRouteIDs[2]);
917 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id()); 918 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id());
918 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount()); 919 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount());
919 RunAllPendingInMessageLoop(); 920 RunAllPendingInMessageLoop();
920 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount()); 921 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount());
921 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get()); 922 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get());
922 } 923 }
923 924
924 } // namespace content 925 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/shared_worker/shared_worker_service_impl.cc ('k') | content/browser/site_instance_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698