| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/public/browser/service_worker_context.h" | 5 #include "content/public/browser/service_worker_context.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 } | 579 } |
| 580 | 580 |
| 581 TEST_F(ServiceWorkerContextTest, ProviderHostIterator) { | 581 TEST_F(ServiceWorkerContextTest, ProviderHostIterator) { |
| 582 const int kRenderProcessId1 = 1; | 582 const int kRenderProcessId1 = 1; |
| 583 const int kRenderProcessId2 = 2; | 583 const int kRenderProcessId2 = 2; |
| 584 const GURL kOrigin1 = GURL("http://www.example.com/"); | 584 const GURL kOrigin1 = GURL("http://www.example.com/"); |
| 585 const GURL kOrigin2 = GURL("https://www.example.com/"); | 585 const GURL kOrigin2 = GURL("https://www.example.com/"); |
| 586 int provider_id = 1; | 586 int provider_id = 1; |
| 587 | 587 |
| 588 // Host1 (provider_id=1): process_id=1, origin1. | 588 // Host1 (provider_id=1): process_id=1, origin1. |
| 589 ServiceWorkerProviderHost* host1(new ServiceWorkerProviderHost( | 589 std::unique_ptr<ServiceWorkerProviderHost> host1 = |
| 590 kRenderProcessId1, MSG_ROUTING_NONE, provider_id++, | 590 CreateProviderHostForWindow(kRenderProcessId1, provider_id++, |
| 591 SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 591 true /* is_parent_frame_secure */, |
| 592 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 592 context()->AsWeakPtr()); |
| 593 context()->AsWeakPtr(), nullptr)); | |
| 594 host1->SetDocumentUrl(kOrigin1); | 593 host1->SetDocumentUrl(kOrigin1); |
| 595 | 594 |
| 596 // Host2 (provider_id=2): process_id=2, origin2. | 595 // Host2 (provider_id=2): process_id=2, origin2. |
| 597 ServiceWorkerProviderHost* host2(new ServiceWorkerProviderHost( | 596 std::unique_ptr<ServiceWorkerProviderHost> host2 = |
| 598 kRenderProcessId2, MSG_ROUTING_NONE, provider_id++, | 597 CreateProviderHostForWindow(kRenderProcessId2, provider_id++, |
| 599 SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 598 true /* is_parent_frame_secure */, |
| 600 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 599 context()->AsWeakPtr()); |
| 601 context()->AsWeakPtr(), nullptr)); | |
| 602 host2->SetDocumentUrl(kOrigin2); | 600 host2->SetDocumentUrl(kOrigin2); |
| 603 | 601 |
| 604 // Host3 (provider_id=3): process_id=2, origin1. | 602 // Host3 (provider_id=3): process_id=2, origin1. |
| 605 ServiceWorkerProviderHost* host3(new ServiceWorkerProviderHost( | 603 std::unique_ptr<ServiceWorkerProviderHost> host3 = |
| 606 kRenderProcessId2, MSG_ROUTING_NONE, provider_id++, | 604 CreateProviderHostForWindow(kRenderProcessId2, provider_id++, |
| 607 SERVICE_WORKER_PROVIDER_FOR_WINDOW, | 605 true /* is_parent_frame_secure */, |
| 608 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 606 context()->AsWeakPtr()); |
| 609 context()->AsWeakPtr(), nullptr)); | |
| 610 host3->SetDocumentUrl(kOrigin1); | 607 host3->SetDocumentUrl(kOrigin1); |
| 611 | 608 |
| 612 // Host4 (provider_id=4): process_id=2, origin2, for ServiceWorker. | 609 // Host4 (provider_id=4): process_id=2, origin2, for ServiceWorker. |
| 613 ServiceWorkerProviderHost* host4(new ServiceWorkerProviderHost( | 610 std::unique_ptr<ServiceWorkerProviderHost> host4 = |
| 614 kRenderProcessId2, MSG_ROUTING_NONE, provider_id++, | 611 CreateProviderHostForServiceWorkerContext( |
| 615 SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, | 612 kRenderProcessId2, provider_id++, true /* is_parent_frame_secure */, |
| 616 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, | 613 context()->AsWeakPtr()); |
| 617 context()->AsWeakPtr(), nullptr)); | |
| 618 host4->SetDocumentUrl(kOrigin2); | 614 host4->SetDocumentUrl(kOrigin2); |
| 619 | 615 |
| 620 context()->AddProviderHost(base::WrapUnique(host1)); | 616 ServiceWorkerProviderHost* host1_raw = host1.get(); |
| 621 context()->AddProviderHost(base::WrapUnique(host2)); | 617 ServiceWorkerProviderHost* host2_raw = host2.get(); |
| 622 context()->AddProviderHost(base::WrapUnique(host3)); | 618 ServiceWorkerProviderHost* host3_raw = host3.get(); |
| 623 context()->AddProviderHost(base::WrapUnique(host4)); | 619 ServiceWorkerProviderHost* host4_raw = host4.get(); |
| 620 context()->AddProviderHost(std::move(host1)); |
| 621 context()->AddProviderHost(std::move(host2)); |
| 622 context()->AddProviderHost(std::move(host3)); |
| 623 context()->AddProviderHost(std::move(host4)); |
| 624 | 624 |
| 625 // Iterate over all provider hosts. | 625 // Iterate over all provider hosts. |
| 626 std::set<ServiceWorkerProviderHost*> results; | 626 std::set<ServiceWorkerProviderHost*> results; |
| 627 for (auto it = context()->GetProviderHostIterator(); !it->IsAtEnd(); | 627 for (auto it = context()->GetProviderHostIterator(); !it->IsAtEnd(); |
| 628 it->Advance()) { | 628 it->Advance()) { |
| 629 results.insert(it->GetProviderHost()); | 629 results.insert(it->GetProviderHost()); |
| 630 } | 630 } |
| 631 EXPECT_EQ(4u, results.size()); | 631 EXPECT_EQ(4u, results.size()); |
| 632 EXPECT_TRUE(ContainsKey(results, host1)); | 632 EXPECT_TRUE(ContainsKey(results, host1_raw)); |
| 633 EXPECT_TRUE(ContainsKey(results, host2)); | 633 EXPECT_TRUE(ContainsKey(results, host2_raw)); |
| 634 EXPECT_TRUE(ContainsKey(results, host3)); | 634 EXPECT_TRUE(ContainsKey(results, host3_raw)); |
| 635 EXPECT_TRUE(ContainsKey(results, host4)); | 635 EXPECT_TRUE(ContainsKey(results, host4_raw)); |
| 636 | 636 |
| 637 // Iterate over the client provider hosts that belong to kOrigin1. | 637 // Iterate over the client provider hosts that belong to kOrigin1. |
| 638 results.clear(); | 638 results.clear(); |
| 639 for (auto it = context()->GetClientProviderHostIterator(kOrigin1); | 639 for (auto it = context()->GetClientProviderHostIterator(kOrigin1); |
| 640 !it->IsAtEnd(); it->Advance()) { | 640 !it->IsAtEnd(); it->Advance()) { |
| 641 results.insert(it->GetProviderHost()); | 641 results.insert(it->GetProviderHost()); |
| 642 } | 642 } |
| 643 EXPECT_EQ(2u, results.size()); | 643 EXPECT_EQ(2u, results.size()); |
| 644 EXPECT_TRUE(ContainsKey(results, host1)); | 644 EXPECT_TRUE(ContainsKey(results, host1_raw)); |
| 645 EXPECT_TRUE(ContainsKey(results, host3)); | 645 EXPECT_TRUE(ContainsKey(results, host3_raw)); |
| 646 | 646 |
| 647 // Iterate over the provider hosts that belong to kOrigin2. | 647 // Iterate over the provider hosts that belong to kOrigin2. |
| 648 // (This should not include host4 as it's not for controllee.) | 648 // (This should not include host4 as it's not for controllee.) |
| 649 results.clear(); | 649 results.clear(); |
| 650 for (auto it = context()->GetClientProviderHostIterator(kOrigin2); | 650 for (auto it = context()->GetClientProviderHostIterator(kOrigin2); |
| 651 !it->IsAtEnd(); it->Advance()) { | 651 !it->IsAtEnd(); it->Advance()) { |
| 652 results.insert(it->GetProviderHost()); | 652 results.insert(it->GetProviderHost()); |
| 653 } | 653 } |
| 654 EXPECT_EQ(1u, results.size()); | 654 EXPECT_EQ(1u, results.size()); |
| 655 EXPECT_TRUE(ContainsKey(results, host2)); | 655 EXPECT_TRUE(ContainsKey(results, host2_raw)); |
| 656 | 656 |
| 657 context()->RemoveProviderHost(kRenderProcessId1, 1); | 657 context()->RemoveProviderHost(kRenderProcessId1, 1); |
| 658 context()->RemoveProviderHost(kRenderProcessId2, 2); | 658 context()->RemoveProviderHost(kRenderProcessId2, 2); |
| 659 context()->RemoveProviderHost(kRenderProcessId2, 3); | 659 context()->RemoveProviderHost(kRenderProcessId2, 3); |
| 660 context()->RemoveProviderHost(kRenderProcessId2, 4); | 660 context()->RemoveProviderHost(kRenderProcessId2, 4); |
| 661 } | 661 } |
| 662 | 662 |
| 663 class ServiceWorkerContextRecoveryTest | 663 class ServiceWorkerContextRecoveryTest |
| 664 : public ServiceWorkerContextTest, | 664 : public ServiceWorkerContextTest, |
| 665 public testing::WithParamInterface<bool> { | 665 public testing::WithParamInterface<bool> { |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 EXPECT_EQ(REGISTRATION_STORED, notifications_[2].type); | 761 EXPECT_EQ(REGISTRATION_STORED, notifications_[2].type); |
| 762 EXPECT_EQ(pattern, notifications_[2].pattern); | 762 EXPECT_EQ(pattern, notifications_[2].pattern); |
| 763 EXPECT_EQ(registration_id, notifications_[2].registration_id); | 763 EXPECT_EQ(registration_id, notifications_[2].registration_id); |
| 764 } | 764 } |
| 765 | 765 |
| 766 INSTANTIATE_TEST_CASE_P(ServiceWorkerContextRecoveryTest, | 766 INSTANTIATE_TEST_CASE_P(ServiceWorkerContextRecoveryTest, |
| 767 ServiceWorkerContextRecoveryTest, | 767 ServiceWorkerContextRecoveryTest, |
| 768 testing::Bool()); | 768 testing::Bool()); |
| 769 | 769 |
| 770 } // namespace content | 770 } // namespace content |
| OLD | NEW |