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

Side by Side Diff: content/browser/service_worker/service_worker_context_core.cc

Issue 2009453002: service worker: Don't control a subframe of an insecure context (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 6 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 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/browser/service_worker/service_worker_context_core.h" 5 #include "content/browser/service_worker/service_worker_context_core.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 const StatusCallback& callback) { 624 const StatusCallback& callback) {
625 job_coordinator_->AbortAll(); 625 job_coordinator_->AbortAll();
626 storage_->DeleteAndStartOver(callback); 626 storage_->DeleteAndStartOver(callback);
627 } 627 }
628 628
629 std::unique_ptr<ServiceWorkerProviderHost> 629 std::unique_ptr<ServiceWorkerProviderHost>
630 ServiceWorkerContextCore::TransferProviderHostOut(int process_id, 630 ServiceWorkerContextCore::TransferProviderHostOut(int process_id,
631 int provider_id) { 631 int provider_id) {
632 ProviderMap* map = GetProviderMapForProcess(process_id); 632 ProviderMap* map = GetProviderMapForProcess(process_id);
633 ServiceWorkerProviderHost* transferee = map->Lookup(provider_id); 633 ServiceWorkerProviderHost* transferee = map->Lookup(provider_id);
634 ServiceWorkerProviderHost* replacement = 634 ServiceWorkerProviderHost* replacement = new ServiceWorkerProviderHost(
635 new ServiceWorkerProviderHost(process_id, 635 process_id, transferee->frame_id(), provider_id,
636 transferee->frame_id(), 636 transferee->provider_type(), transferee->is_parent_frame_secure(),
637 provider_id, 637 AsWeakPtr(), transferee->dispatcher_host());
638 transferee->provider_type(),
639 AsWeakPtr(),
640 transferee->dispatcher_host());
641 map->Replace(provider_id, replacement); 638 map->Replace(provider_id, replacement);
642 transferee->PrepareForCrossSiteTransfer(); 639 transferee->PrepareForCrossSiteTransfer();
643 return base::WrapUnique(transferee); 640 return base::WrapUnique(transferee);
644 } 641 }
645 642
646 void ServiceWorkerContextCore::TransferProviderHostIn( 643 bool ServiceWorkerContextCore::TransferProviderHostIn(
647 int new_process_id, 644 int new_process_id,
648 int new_provider_id, 645 int new_provider_id,
649 std::unique_ptr<ServiceWorkerProviderHost> transferee) { 646 std::unique_ptr<ServiceWorkerProviderHost> transferee) {
650 ProviderMap* map = GetProviderMapForProcess(new_process_id); 647 ProviderMap* map = GetProviderMapForProcess(new_process_id);
651 ServiceWorkerProviderHost* temp = map->Lookup(new_provider_id); 648 ServiceWorkerProviderHost* temp = map->Lookup(new_provider_id);
652 if (!temp) 649 if (!temp)
653 return; 650 return false;
horo 2016/06/03 09:54:44 Do we need the returned value?
falken 2016/06/03 12:10:45 Not anymore. Failed partial revert. Done.
654 651
655 DCHECK(temp->document_url().is_empty()); 652 DCHECK(temp->document_url().is_empty());
656 transferee->CompleteCrossSiteTransfer(new_process_id, 653 transferee->CompleteCrossSiteTransfer(new_process_id,
657 temp->frame_id(), 654 temp->frame_id(),
658 new_provider_id, 655 new_provider_id,
659 temp->provider_type(), 656 temp->provider_type(),
660 temp->dispatcher_host()); 657 temp->dispatcher_host());
661 map->Replace(new_provider_id, transferee.release()); 658 map->Replace(new_provider_id, transferee.release());
662 delete temp; 659 delete temp;
660 return true;
663 } 661 }
664 662
665 void ServiceWorkerContextCore::ClearAllServiceWorkersForTest( 663 void ServiceWorkerContextCore::ClearAllServiceWorkersForTest(
666 const base::Closure& callback) { 664 const base::Closure& callback) {
667 DCHECK_CURRENTLY_ON(BrowserThread::IO); 665 DCHECK_CURRENTLY_ON(BrowserThread::IO);
668 // |callback| will be called in the destructor of |helper| on the UI thread. 666 // |callback| will be called in the destructor of |helper| on the UI thread.
669 scoped_refptr<ClearAllServiceWorkersHelper> helper( 667 scoped_refptr<ClearAllServiceWorkersHelper> helper(
670 new ClearAllServiceWorkersHelper(callback)); 668 new ClearAllServiceWorkersHelper(callback));
671 if (!was_service_worker_registered_) 669 if (!was_service_worker_registered_)
672 return; 670 return;
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 } 848 }
851 849
852 void ServiceWorkerContextCore::OnRegistrationFinishedForCheckHasServiceWorker( 850 void ServiceWorkerContextCore::OnRegistrationFinishedForCheckHasServiceWorker(
853 const ServiceWorkerContext::CheckHasServiceWorkerCallback callback, 851 const ServiceWorkerContext::CheckHasServiceWorkerCallback callback,
854 const scoped_refptr<ServiceWorkerRegistration>& registration) { 852 const scoped_refptr<ServiceWorkerRegistration>& registration) {
855 callback.Run(registration->active_version() || 853 callback.Run(registration->active_version() ||
856 registration->waiting_version()); 854 registration->waiting_version());
857 } 855 }
858 856
859 } // namespace content 857 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698