| Index: content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
 | 
| diff --git a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
 | 
| index bdb95ea0aa912fccae56532601dccfefef04690e..da187d58b51c26b3d4c20cf97f8644a0eee3c85d 100644
 | 
| --- a/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
 | 
| +++ b/content/browser/service_worker/service_worker_dispatcher_host_unittest.cc
 | 
| @@ -124,7 +124,7 @@ class ServiceWorkerDispatcherHostTest : public testing::Test {
 | 
|    scoped_refptr<TestingServiceWorkerDispatcherHost> dispatcher_host_;
 | 
|  };
 | 
|  
 | 
| -TEST_F(ServiceWorkerDispatcherHostTest, Register_SameOrigin) {
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Register_HTTPS) {
 | 
|    const int64 kProviderId = 99;  // Dummy value
 | 
|    scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
|        kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| @@ -138,7 +138,35 @@ TEST_F(ServiceWorkerDispatcherHostTest, Register_SameOrigin) {
 | 
|             ServiceWorkerMsg_ServiceWorkerRegistered::ID);
 | 
|  }
 | 
|  
 | 
| -TEST_F(ServiceWorkerDispatcherHostTest, Register_CrossOrigin) {
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Register_NonSecureTransportLocalhost) {
 | 
| +  const int64 kProviderId = 99;  // Dummy value
 | 
| +  scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
| +      kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| +  host->SetDocumentUrl(GURL("http://127.0.0.3:81/foo"));
 | 
| +  base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
| +  context()->AddProviderHost(host.Pass());
 | 
| +
 | 
| +  Register(kProviderId,
 | 
| +           GURL("http://127.0.0.3:81/bar"),
 | 
| +           GURL("http://127.0.0.3:81/baz"),
 | 
| +           ServiceWorkerMsg_ServiceWorkerRegistered::ID);
 | 
| +}
 | 
| +
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Register_NonSecureOriginShouldFail) {
 | 
| +  const int64 kProviderId = 99;  // Dummy value
 | 
| +  scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
| +      kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| +  host->SetDocumentUrl(GURL("http://www.example.com/foo"));
 | 
| +  base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
| +  context()->AddProviderHost(host.Pass());
 | 
| +
 | 
| +  SendRegister(kProviderId,
 | 
| +               GURL("http://www.example.com/"),
 | 
| +               GURL("http://www.example.com/bar"));
 | 
| +  EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
 | 
| +}
 | 
| +
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Register_CrossOriginShouldFail) {
 | 
|    const int64 kProviderId = 99;  // Dummy value
 | 
|    scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
|        kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| @@ -170,7 +198,7 @@ TEST_F(ServiceWorkerDispatcherHostTest, Register_CrossOrigin) {
 | 
|                 GURL("https://www.example.com/bar"));
 | 
|    EXPECT_EQ(4, dispatcher_host_->bad_messages_received_count_);
 | 
|  
 | 
| -  // Script and scope have different hosts
 | 
| +  // Script and scope have a different host but match each other
 | 
|    SendRegister(kProviderId,
 | 
|                 GURL("https://foo.example.com/"),
 | 
|                 GURL("https://foo.example.com/bar"));
 | 
| @@ -183,20 +211,46 @@ TEST_F(ServiceWorkerDispatcherHostTest, Register_CrossOrigin) {
 | 
|    EXPECT_EQ(6, dispatcher_host_->bad_messages_received_count_);
 | 
|  }
 | 
|  
 | 
| -TEST_F(ServiceWorkerDispatcherHostTest, Unregister_SameOrigin) {
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Unregister_HTTPS) {
 | 
|    const int64 kProviderId = 99;  // Dummy value
 | 
|    scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
|        kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| -  host->SetDocumentUrl(GURL("http://www.example.com/foo"));
 | 
| +  host->SetDocumentUrl(GURL("https://www.example.com/foo"));
 | 
|    base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
|    context()->AddProviderHost(host.Pass());
 | 
|  
 | 
|    Unregister(kProviderId,
 | 
| -             GURL("http://www.example.com/"),
 | 
| +             GURL("https://www.example.com/"),
 | 
|               ServiceWorkerMsg_ServiceWorkerUnregistered::ID);
 | 
|  }
 | 
|  
 | 
| -TEST_F(ServiceWorkerDispatcherHostTest, Unregister_CrossOrigin) {
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest,
 | 
| +       Unregister_NonSecureTransportLocalhost) {
 | 
| +  const int64 kProviderId = 99;  // Dummy value
 | 
| +  scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
| +      kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| +  host->SetDocumentUrl(GURL("http://localhost/foo"));
 | 
| +  base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
| +  context()->AddProviderHost(host.Pass());
 | 
| +
 | 
| +  Unregister(kProviderId,
 | 
| +             GURL("http://localhost/"),
 | 
| +             ServiceWorkerMsg_ServiceWorkerUnregistered::ID);
 | 
| +}
 | 
| +
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Unregister_CrossOriginShouldFail) {
 | 
| +  const int64 kProviderId = 99;  // Dummy value
 | 
| +  scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
| +      kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| +  host->SetDocumentUrl(GURL("https://www.example.com/foo"));
 | 
| +  base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
| +  context()->AddProviderHost(host.Pass());
 | 
| +
 | 
| +  SendUnregister(kProviderId, GURL("https://foo.example.com/"));
 | 
| +  EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
 | 
| +}
 | 
| +
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, Unregister_NonSecureOriginShouldFail) {
 | 
|    const int64 kProviderId = 99;  // Dummy value
 | 
|    scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
|        kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| @@ -204,7 +258,7 @@ TEST_F(ServiceWorkerDispatcherHostTest, Unregister_CrossOrigin) {
 | 
|    base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
|    context()->AddProviderHost(host.Pass());
 | 
|  
 | 
| -  SendUnregister(kProviderId, GURL("http://foo.example.com/"));
 | 
| +  SendUnregister(kProviderId, GURL("http://www.example.com/"));
 | 
|    EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
 | 
|  }
 | 
|  
 | 
| @@ -264,7 +318,7 @@ TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_SameOrigin) {
 | 
|                    ServiceWorkerMsg_DidGetRegistration::ID);
 | 
|  }
 | 
|  
 | 
| -TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_CrossOrigin) {
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_CrossOriginShouldFail) {
 | 
|    const int64 kProviderId = 99;  // Dummy value
 | 
|    scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
|        kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| @@ -276,6 +330,19 @@ TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_CrossOrigin) {
 | 
|    EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
 | 
|  }
 | 
|  
 | 
| +TEST_F(ServiceWorkerDispatcherHostTest,
 | 
| +       GetRegistration_NotSecureOriginShouldFail) {
 | 
| +  const int64 kProviderId = 99;  // Dummy value
 | 
| +  scoped_ptr<ServiceWorkerProviderHost> host(new ServiceWorkerProviderHost(
 | 
| +      kRenderProcessId, kProviderId, context()->AsWeakPtr(), NULL));
 | 
| +  host->SetDocumentUrl(GURL("http://www.example.com/foo"));
 | 
| +  base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr();
 | 
| +  context()->AddProviderHost(host.Pass());
 | 
| +
 | 
| +  SendGetRegistration(kProviderId, GURL("http://www.example.com/"));
 | 
| +  EXPECT_EQ(1, dispatcher_host_->bad_messages_received_count_);
 | 
| +}
 | 
| +
 | 
|  TEST_F(ServiceWorkerDispatcherHostTest, GetRegistration_EarlyContextDeletion) {
 | 
|    helper_->ShutdownContext();
 | 
|  
 | 
| 
 |