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

Side by Side Diff: chrome/browser/browsing_data/history_counter.cc

Issue 1413373012: Sanitize access to services in HistoryCounter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #include <limits.h> 5 #include <limits.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include "base/timer/timer.h" 8 #include "base/timer/timer.h"
9 #include "chrome/browser/browsing_data/history_counter.h" 9 #include "chrome/browser/browsing_data/history_counter.h"
10 #include "chrome/browser/history/history_service_factory.h" 10 #include "chrome/browser/history/history_service_factory.h"
(...skipping 12 matching lines...) Expand all
23 HistoryCounter::HistoryCounter() : pref_name_(prefs::kDeleteBrowsingHistory), 23 HistoryCounter::HistoryCounter() : pref_name_(prefs::kDeleteBrowsingHistory),
24 has_synced_visits_(false), 24 has_synced_visits_(false),
25 local_counting_finished_(false), 25 local_counting_finished_(false),
26 web_counting_finished_(false), 26 web_counting_finished_(false),
27 testing_web_history_service_(nullptr), 27 testing_web_history_service_(nullptr),
28 sync_service_(nullptr), 28 sync_service_(nullptr),
29 history_sync_enabled_(false) { 29 history_sync_enabled_(false) {
30 } 30 }
31 31
32 HistoryCounter::~HistoryCounter() { 32 HistoryCounter::~HistoryCounter() {
33 DCHECK(sync_service_); 33 if (sync_service_)
34 sync_service_->RemoveObserver(this); 34 sync_service_->RemoveObserver(this);
35 } 35 }
36 36
37 void HistoryCounter::OnInitialized() { 37 void HistoryCounter::OnInitialized() {
38 sync_service_ = ProfileSyncServiceFactory::GetForProfile(GetProfile()); 38 sync_service_ = ProfileSyncServiceFactory::GetForProfile(GetProfile());
39 DCHECK(sync_service_); 39 if (sync_service_)
40 sync_service_->AddObserver(this); 40 sync_service_->AddObserver(this);
41 history_sync_enabled_ = 41 history_sync_enabled_ =
42 !!WebHistoryServiceFactory::GetForProfile(GetProfile()); 42 !!WebHistoryServiceFactory::GetForProfile(GetProfile());
43 } 43 }
44 44
45 const std::string& HistoryCounter::GetPrefName() const { 45 const std::string& HistoryCounter::GetPrefName() const {
46 return pref_name_; 46 return pref_name_;
47 } 47 }
48 48
49 bool HistoryCounter::HasTrackedTasks() { 49 bool HistoryCounter::HasTrackedTasks() {
50 return cancelable_task_tracker_.HasTrackedTasks(); 50 return cancelable_task_tracker_.HasTrackedTasks();
51 } 51 }
52 52
53 void HistoryCounter::SetWebHistoryServiceForTesting( 53 void HistoryCounter::SetWebHistoryServiceForTesting(
54 history::WebHistoryService* service) { 54 history::WebHistoryService* service) {
55 testing_web_history_service_ = service; 55 testing_web_history_service_ = service;
56 } 56 }
57 57
58 void HistoryCounter::Count() { 58 void HistoryCounter::Count() {
59 // Reset the state. 59 // Reset the state.
60 cancelable_task_tracker_.TryCancelAll(); 60 cancelable_task_tracker_.TryCancelAll();
61 web_history_request_.reset(); 61 web_history_request_.reset();
62 has_synced_visits_ = false; 62 has_synced_visits_ = false;
63 63
64 // Count the locally stored items. 64 // Count the locally stored items.
65 local_counting_finished_ = false; 65 local_counting_finished_ = false;
66 66
67 history::HistoryService* service = 67 history::HistoryService* service =
68 HistoryServiceFactory::GetForProfileWithoutCreating(GetProfile()); 68 HistoryServiceFactory::GetForProfile(
69 GetProfile(), ServiceAccessType::EXPLICIT_ACCESS);
69 70
70 service->GetHistoryCount( 71 service->GetHistoryCount(
71 GetPeriodStart(), 72 GetPeriodStart(),
72 base::Time::Max(), 73 base::Time::Max(),
73 base::Bind(&HistoryCounter::OnGetLocalHistoryCount, 74 base::Bind(&HistoryCounter::OnGetLocalHistoryCount,
74 base::Unretained(this)), 75 base::Unretained(this)),
75 &cancelable_task_tracker_); 76 &cancelable_task_tracker_);
76 77
77 // If the history sync is enabled, test if there is at least one synced item. 78 // If the history sync is enabled, test if there is at least one synced item.
78 // If the testing web history service is present, use that one instead. 79 // If the testing web history service is present, use that one instead.
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 bool history_sync_enabled_new_state = 183 bool history_sync_enabled_new_state =
183 !!WebHistoryServiceFactory::GetForProfile(GetProfile()); 184 !!WebHistoryServiceFactory::GetForProfile(GetProfile());
184 185
185 // If the history sync was just enabled or disabled, restart the counter 186 // If the history sync was just enabled or disabled, restart the counter
186 // so that we update the result accordingly. 187 // so that we update the result accordingly.
187 if (history_sync_enabled_ != history_sync_enabled_new_state) { 188 if (history_sync_enabled_ != history_sync_enabled_new_state) {
188 history_sync_enabled_ = history_sync_enabled_new_state; 189 history_sync_enabled_ = history_sync_enabled_new_state;
189 Restart(); 190 Restart();
190 } 191 }
191 } 192 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698