1 // Copyright 2017 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/offline_items_collection/core/test_support/scoped_mock_offline_content_provider.h" 6 7 #include "components/offline_items_collection/core/offline_content_aggregator.h" 8 #include "components/offline_items_collection/core/offline_content_provider.h" 9 10 namespace offline_items_collection { 11 ScopedMockObserver(OfflineContentProvider * provider)12ScopedMockOfflineContentProvider::ScopedMockObserver::ScopedMockObserver( 13 OfflineContentProvider* provider) 14 : provider_(provider) { 15 provider_->AddObserver(this); 16 } 17 ScopedMockObserver()18ScopedMockOfflineContentProvider::ScopedMockObserver::ScopedMockObserver() 19 : provider_(nullptr) {} 20 ~ScopedMockObserver()21ScopedMockOfflineContentProvider::ScopedMockObserver::~ScopedMockObserver() { 22 if (provider_) 23 provider_->RemoveObserver(this); 24 } 25 AddProvider(OfflineContentProvider * provider)26void ScopedMockOfflineContentProvider::ScopedMockObserver::AddProvider( 27 OfflineContentProvider* provider) { 28 DCHECK(!provider_) << "Already has a provider."; 29 provider_ = provider; 30 provider_->AddObserver(this); 31 } 32 ScopedMockOfflineContentProvider(const std::string & name_space,OfflineContentAggregator * aggregator)33ScopedMockOfflineContentProvider::ScopedMockOfflineContentProvider( 34 const std::string& name_space, 35 OfflineContentAggregator* aggregator) 36 : name_space_(name_space), aggregator_(aggregator) { 37 aggregator_->RegisterProvider(name_space_, this); 38 } 39 ~ScopedMockOfflineContentProvider()40ScopedMockOfflineContentProvider::~ScopedMockOfflineContentProvider() { 41 Unregister(); 42 } 43 Unregister()44void ScopedMockOfflineContentProvider::Unregister() { 45 if (!aggregator_) 46 return; 47 48 aggregator_->UnregisterProvider(name_space_); 49 aggregator_ = nullptr; 50 } 51 52 } // namespace offline_items_collection 53