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

Side by Side Diff: ios/web/browsing_data_partition_impl.mm

Issue 1146223012: Cleaning up CRWBrowsingDataMode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: y Created 5 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
« no previous file with comments | « no previous file | ios/web/crw_browsing_data_store.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #import "ios/web/browsing_data_partition_impl.h" 5 #import "ios/web/browsing_data_partition_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "ios/web/public/browser_state.h" 8 #include "ios/web/public/browser_state.h"
9 #import "ios/web/public/crw_browsing_data_store.h" 9 #import "ios/web/public/crw_browsing_data_store.h"
10 #include "ios/web/public/web_thread.h" 10 #include "ios/web/public/web_thread.h"
11 11
12 // A class that observes the |mode| changes in a CRWBrowsingDataStore using KVO. 12 // A class that observes the |mode| changes in a CRWBrowsingDataStore using KVO.
13 // Maintains a count of all the CRWBrowsingDataStores whose mode is out of sync 13 // Maintains a count of all the CRWBrowsingDataStores whose mode is out of sync
14 // with their corresponding ActiveStateManager's active state. 14 // with their corresponding ActiveStateManager's active state.
15 @interface CRWBrowsingDataStoreModeObserver : NSObject 15 @interface CRWBrowsingDataStoreModeObserver : NSObject
16 16
17 // The total count of the CRWBrowsingDataStores -- that are being observed -- 17 // The total count of the CRWBrowsingDataStores -- that are being observed --
18 // whose mode is out of sync with their associated ActiveStateManager's active 18 // whose mode is out of sync with their associated ActiveStateManager's active
19 // state. 19 // state.
20 @property(nonatomic, assign) NSUInteger outOfSyncStoreCount; 20 @property(nonatomic, assign) NSUInteger outOfSyncStoreCount;
21 21
22 // Adds |browsingDataStore| to the list of the CRWBrowsingDataStores that are 22 // Adds |browsingDataStore| to the list of the CRWBrowsingDataStores that are
23 // being observed for KVO changes in the |mode| value. |browserState| cannot be 23 // being observed for KVO changes in the |mode| value. |browserState| cannot be
24 // null and the |browserState|'s associated CRWBrowsingDataStore must be 24 // null and the |browserState|'s associated CRWBrowsingDataStore must be
25 // |browsingDataStore|. 25 // |browsingDataStore|.
26 // The |browsingDataStore|'s mode must not already be SYNCHRONIZING. 26 // The |browsingDataStore|'s mode must not already be |CHANGING|.
27 - (void)startObservingBrowsingDataStore:(CRWBrowsingDataStore*)browsingDataStore 27 - (void)startObservingBrowsingDataStore:(CRWBrowsingDataStore*)browsingDataStore
28 browserState:(web::BrowserState*)browserState; 28 browserState:(web::BrowserState*)browserState;
29 29
30 // Stops observing |browsingDataStore| for its |mode| change. 30 // Stops observing |browsingDataStore| for its |mode| change.
31 // The |browsingDataStore|'s mode must not be SYNCHRONIZING. 31 // The |browsingDataStore|'s mode must not be |CHANGING|.
32 - (void)stopObservingBrowsingDataStore:(CRWBrowsingDataStore*)browsingDataStore; 32 - (void)stopObservingBrowsingDataStore:(CRWBrowsingDataStore*)browsingDataStore;
33 @end 33 @end
34 34
35 @implementation CRWBrowsingDataStoreModeObserver 35 @implementation CRWBrowsingDataStoreModeObserver
36 36
37 @synthesize outOfSyncStoreCount = _outOfSyncStoreCount; 37 @synthesize outOfSyncStoreCount = _outOfSyncStoreCount;
38 38
39 - (void)startObservingBrowsingDataStore:(CRWBrowsingDataStore*)browsingDataStore 39 - (void)startObservingBrowsingDataStore:(CRWBrowsingDataStore*)browsingDataStore
40 browserState:(web::BrowserState*)browserState { 40 browserState:(web::BrowserState*)browserState {
41 web::BrowsingDataPartition* browsing_data_partition = 41 web::BrowsingDataPartition* browsing_data_partition =
42 web::BrowserState::GetBrowsingDataPartition(browserState); 42 web::BrowserState::GetBrowsingDataPartition(browserState);
43 DCHECK(browsing_data_partition); 43 DCHECK(browsing_data_partition);
44 DCHECK_EQ(browsing_data_partition->GetBrowsingDataStore(), browsingDataStore); 44 DCHECK_EQ(browsing_data_partition->GetBrowsingDataStore(), browsingDataStore);
45 DCHECK_NE(SYNCHRONIZING, browsingDataStore.mode); 45 DCHECK_NE(web::CHANGING, browsingDataStore.mode);
46 46
47 [browsingDataStore addObserver:self 47 [browsingDataStore addObserver:self
48 forKeyPath:@"mode" 48 forKeyPath:@"mode"
49 options:0 49 options:0
50 context:browserState]; 50 context:browserState];
51 } 51 }
52 52
53 - (void)stopObservingBrowsingDataStore: 53 - (void)stopObservingBrowsingDataStore:
54 (CRWBrowsingDataStore*)browsingDataStore { 54 (CRWBrowsingDataStore*)browsingDataStore {
55 DCHECK_NE(SYNCHRONIZING, browsingDataStore.mode); 55 DCHECK_NE(web::CHANGING, browsingDataStore.mode);
56 56
57 [browsingDataStore removeObserver:self forKeyPath:@"mode"]; 57 [browsingDataStore removeObserver:self forKeyPath:@"mode"];
58 } 58 }
59 59
60 - (void)observeValueForKeyPath:(NSString*)keyPath 60 - (void)observeValueForKeyPath:(NSString*)keyPath
61 ofObject:(CRWBrowsingDataStore*)browsingDataStore 61 ofObject:(CRWBrowsingDataStore*)browsingDataStore
62 change:(NSDictionary*)change 62 change:(NSDictionary*)change
63 context:(void*)context { 63 context:(void*)context {
64 DCHECK([keyPath isEqual:@"mode"]); 64 DCHECK([keyPath isEqual:@"mode"]);
65 DCHECK([browsingDataStore isKindOfClass:[CRWBrowsingDataStore class]]); 65 DCHECK([browsingDataStore isKindOfClass:[CRWBrowsingDataStore class]]);
66 DCHECK(context); 66 DCHECK(context);
67 67
68 if (browsingDataStore.mode == SYNCHRONIZING) { 68 if (browsingDataStore.mode == web::CHANGING) {
69 ++self.outOfSyncStoreCount; 69 ++self.outOfSyncStoreCount;
70 return; 70 return;
71 } 71 }
72 web::BrowserState* browserState = static_cast<web::BrowserState*>(context); 72 web::BrowserState* browserState = static_cast<web::BrowserState*>(context);
73 web::ActiveStateManager* activeStateManager = 73 web::ActiveStateManager* activeStateManager =
74 web::BrowserState::GetActiveStateManager(browserState); 74 web::BrowserState::GetActiveStateManager(browserState);
75 DCHECK(activeStateManager); 75 DCHECK(activeStateManager);
76 bool activeState = activeStateManager->IsActive(); 76 bool activeState = activeStateManager->IsActive();
77 // Check if the |browsingDataStore|'s associated ActiveStateManager's active 77 // Check if the |browsingDataStore|'s associated ActiveStateManager's active
78 // state is still out of sync. 78 // state is still out of sync.
79 if (activeState && browsingDataStore.mode == INACTIVE) { 79 if (activeState && browsingDataStore.mode == web::INACTIVE) {
80 [browsingDataStore makeActiveWithCompletionHandler:nil]; 80 [browsingDataStore makeActiveWithCompletionHandler:nil];
81 } else if (!activeState && browsingDataStore.mode == ACTIVE) { 81 } else if (!activeState && browsingDataStore.mode == web::ACTIVE) {
82 [browsingDataStore makeInactiveWithCompletionHandler:nil]; 82 [browsingDataStore makeInactiveWithCompletionHandler:nil];
83 } 83 }
84 84
85 DCHECK_GE(self.outOfSyncStoreCount, 1U); 85 DCHECK_GE(self.outOfSyncStoreCount, 1U);
86 --self.outOfSyncStoreCount; 86 --self.outOfSyncStoreCount;
87 // TODO(shreyasv): Have a BrowsingDataPartitionClient be informed when 87 // TODO(shreyasv): Have a BrowsingDataPartitionClient be informed when
88 // |self.outOfSyncStoreCount| goes down to 0. crbug.com/480654. 88 // |self.outOfSyncStoreCount| goes down to 0. crbug.com/480654.
89 } 89 }
90 90
91 @end 91 @end
(...skipping 16 matching lines...) Expand all
108 active_state_manager_ = static_cast<ActiveStateManagerImpl*>( 108 active_state_manager_ = static_cast<ActiveStateManagerImpl*>(
109 BrowserState::GetActiveStateManager(browser_state)); 109 BrowserState::GetActiveStateManager(browser_state));
110 DCHECK(active_state_manager_); 110 DCHECK(active_state_manager_);
111 active_state_manager_->AddObserver(this); 111 active_state_manager_->AddObserver(this);
112 } 112 }
113 113
114 BrowsingDataPartitionImpl::~BrowsingDataPartitionImpl() { 114 BrowsingDataPartitionImpl::~BrowsingDataPartitionImpl() {
115 if (active_state_manager_) { 115 if (active_state_manager_) {
116 active_state_manager_->RemoveObserver(this); 116 active_state_manager_->RemoveObserver(this);
117 } 117 }
118 DCHECK_NE(SYNCHRONIZING, [browsing_data_store_ mode]); 118 DCHECK_NE(CHANGING, [browsing_data_store_ mode]);
119 [g_browsing_data_store_mode_observer 119 [g_browsing_data_store_mode_observer
120 stopObservingBrowsingDataStore:browsing_data_store_]; 120 stopObservingBrowsingDataStore:browsing_data_store_];
121 } 121 }
122 122
123 // static 123 // static
124 bool BrowsingDataPartition::IsSynchronized() { 124 bool BrowsingDataPartition::IsSynchronized() {
125 return [g_browsing_data_store_mode_observer outOfSyncStoreCount] == 0U; 125 return [g_browsing_data_store_mode_observer outOfSyncStoreCount] == 0U;
126 } 126 }
127 127
128 CRWBrowsingDataStore* BrowsingDataPartitionImpl::GetBrowsingDataStore() { 128 CRWBrowsingDataStore* BrowsingDataPartitionImpl::GetBrowsingDataStore() {
(...skipping 26 matching lines...) Expand all
155 } 155 }
156 156
157 void BrowsingDataPartitionImpl::WillBeDestroyed() { 157 void BrowsingDataPartitionImpl::WillBeDestroyed() {
158 DCHECK_CURRENTLY_ON_WEB_THREAD(WebThread::UI); 158 DCHECK_CURRENTLY_ON_WEB_THREAD(WebThread::UI);
159 159
160 active_state_manager_->RemoveObserver(this); 160 active_state_manager_->RemoveObserver(this);
161 active_state_manager_ = nullptr; 161 active_state_manager_ = nullptr;
162 } 162 }
163 163
164 } // namespace web 164 } // namespace web
OLDNEW
« no previous file with comments | « no previous file | ios/web/crw_browsing_data_store.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698