| OLD | NEW |
| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/callback.h" | 6 #include "base/callback.h" |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "content/browser/fileapi/chrome_blob_storage_context.h" | 10 #include "content/browser/fileapi/chrome_blob_storage_context.h" |
| (...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 ServiceWorkerResponse* response, | 487 ServiceWorkerResponse* response, |
| 488 scoped_ptr<storage::BlobDataHandle>* blob_data_handle) { | 488 scoped_ptr<storage::BlobDataHandle>* blob_data_handle) { |
| 489 RunOnIOThread( | 489 RunOnIOThread( |
| 490 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); | 490 base::Bind(&self::SetUpRegistrationOnIOThread, this, worker_url)); |
| 491 FetchOnRegisteredWorker(result, response, blob_data_handle); | 491 FetchOnRegisteredWorker(result, response, blob_data_handle); |
| 492 } | 492 } |
| 493 | 493 |
| 494 void SetUpRegistrationOnIOThread(const std::string& worker_url) { | 494 void SetUpRegistrationOnIOThread(const std::string& worker_url) { |
| 495 registration_ = new ServiceWorkerRegistration( | 495 registration_ = new ServiceWorkerRegistration( |
| 496 embedded_test_server()->GetURL("/"), | 496 embedded_test_server()->GetURL("/"), |
| 497 embedded_test_server()->GetURL(worker_url), | |
| 498 wrapper()->context()->storage()->NewRegistrationId(), | 497 wrapper()->context()->storage()->NewRegistrationId(), |
| 499 wrapper()->context()->AsWeakPtr()); | 498 wrapper()->context()->AsWeakPtr()); |
| 500 version_ = new ServiceWorkerVersion( | 499 version_ = new ServiceWorkerVersion( |
| 501 registration_, | 500 registration_, |
| 501 embedded_test_server()->GetURL(worker_url), |
| 502 wrapper()->context()->storage()->NewVersionId(), | 502 wrapper()->context()->storage()->NewVersionId(), |
| 503 wrapper()->context()->AsWeakPtr()); | 503 wrapper()->context()->AsWeakPtr()); |
| 504 AssociateRendererProcessToWorker(version_->embedded_worker()); | 504 AssociateRendererProcessToWorker(version_->embedded_worker()); |
| 505 } | 505 } |
| 506 | 506 |
| 507 void StartOnIOThread(const base::Closure& done, | 507 void StartOnIOThread(const base::Closure& done, |
| 508 ServiceWorkerStatusCode* result) { | 508 ServiceWorkerStatusCode* result) { |
| 509 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 509 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 510 version_->StartWorker(CreateReceiver(BrowserThread::UI, done, result)); | 510 version_->StartWorker(CreateReceiver(BrowserThread::UI, done, result)); |
| 511 } | 511 } |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 816 &num_resources)); | 816 &num_resources)); |
| 817 EXPECT_EQ(kExpectedNumResources, num_resources); | 817 EXPECT_EQ(kExpectedNumResources, num_resources); |
| 818 } | 818 } |
| 819 | 819 |
| 820 class ServiceWorkerBlackBoxBrowserTest : public ServiceWorkerBrowserTest { | 820 class ServiceWorkerBlackBoxBrowserTest : public ServiceWorkerBrowserTest { |
| 821 public: | 821 public: |
| 822 typedef ServiceWorkerBlackBoxBrowserTest self; | 822 typedef ServiceWorkerBlackBoxBrowserTest self; |
| 823 | 823 |
| 824 void FindRegistrationOnIO(const GURL& document_url, | 824 void FindRegistrationOnIO(const GURL& document_url, |
| 825 ServiceWorkerStatusCode* status, | 825 ServiceWorkerStatusCode* status, |
| 826 GURL* script_url, | |
| 827 const base::Closure& continuation) { | 826 const base::Closure& continuation) { |
| 828 wrapper()->context()->storage()->FindRegistrationForDocument( | 827 wrapper()->context()->storage()->FindRegistrationForDocument( |
| 829 document_url, | 828 document_url, |
| 830 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO2, | 829 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO2, |
| 831 this, | 830 this, |
| 832 status, | 831 status, |
| 833 script_url, | |
| 834 continuation)); | 832 continuation)); |
| 835 } | 833 } |
| 836 | 834 |
| 837 void FindRegistrationOnIO2( | 835 void FindRegistrationOnIO2( |
| 838 ServiceWorkerStatusCode* out_status, | 836 ServiceWorkerStatusCode* out_status, |
| 839 GURL* script_url, | |
| 840 const base::Closure& continuation, | 837 const base::Closure& continuation, |
| 841 ServiceWorkerStatusCode status, | 838 ServiceWorkerStatusCode status, |
| 842 const scoped_refptr<ServiceWorkerRegistration>& registration) { | 839 const scoped_refptr<ServiceWorkerRegistration>& registration) { |
| 843 *out_status = status; | 840 *out_status = status; |
| 844 if (registration) { | 841 if (!registration) |
| 845 *script_url = registration->script_url(); | |
| 846 } else { | |
| 847 EXPECT_NE(SERVICE_WORKER_OK, status); | 842 EXPECT_NE(SERVICE_WORKER_OK, status); |
| 848 } | |
| 849 continuation.Run(); | 843 continuation.Run(); |
| 850 } | 844 } |
| 851 }; | 845 }; |
| 852 | 846 |
| 853 static int CountRenderProcessHosts() { | 847 static int CountRenderProcessHosts() { |
| 854 int result = 0; | 848 int result = 0; |
| 855 for (RenderProcessHost::iterator iter(RenderProcessHost::AllHostsIterator()); | 849 for (RenderProcessHost::iterator iter(RenderProcessHost::AllHostsIterator()); |
| 856 !iter.IsAtEnd(); | 850 !iter.IsAtEnd(); |
| 857 iter.Advance()) { | 851 iter.Advance()) { |
| 858 result++; | 852 result++; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 927 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); | 921 base::Bind(&ExpectResultAndRun, true, run_loop.QuitClosure())); |
| 928 run_loop.Run(); | 922 run_loop.Run(); |
| 929 } | 923 } |
| 930 EXPECT_GE(1, CountRenderProcessHosts()) << "Unregistering doesn't stop the " | 924 EXPECT_GE(1, CountRenderProcessHosts()) << "Unregistering doesn't stop the " |
| 931 "workers eagerly, so their RPHs " | 925 "workers eagerly, so their RPHs " |
| 932 "can still be running."; | 926 "can still be running."; |
| 933 | 927 |
| 934 // Should not be able to find it. | 928 // Should not be able to find it. |
| 935 { | 929 { |
| 936 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 930 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 937 GURL script_url; | |
| 938 RunOnIOThread( | 931 RunOnIOThread( |
| 939 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO, | 932 base::Bind(&ServiceWorkerBlackBoxBrowserTest::FindRegistrationOnIO, |
| 940 this, | 933 this, |
| 941 embedded_test_server()->GetURL("/service_worker/empty.html"), | 934 embedded_test_server()->GetURL("/service_worker/empty.html"), |
| 942 &status, | 935 &status)); |
| 943 &script_url)); | |
| 944 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); | 936 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, status); |
| 945 } | 937 } |
| 946 } | 938 } |
| 947 | 939 |
| 948 } // namespace content | 940 } // namespace content |
| OLD | NEW |