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

Unified Diff: chrome/browser/android/data_usage/data_use_tab_model.cc

Issue 1443683002: Notify DataUseTabModel of navigations and tab closures (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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/data_usage/data_use_tab_model.cc
diff --git a/chrome/browser/android/data_usage/data_use_tab_model.cc b/chrome/browser/android/data_usage/data_use_tab_model.cc
index c4d8e36e39e2716ec47af99ce4fe3453efac5227..8a2222da55c3ec71e4f0b778b111151758af52ab 100644
--- a/chrome/browser/android/data_usage/data_use_tab_model.cc
+++ b/chrome/browser/android/data_usage/data_use_tab_model.cc
@@ -7,6 +7,7 @@
#include "base/time/time.h"
#include "chrome/browser/android/data_usage/external_data_use_observer.h"
#include "chrome/browser/android/data_usage/tab_data_use_entry.h"
+#include "content/public/browser/browser_thread.h"
sclittle 2015/11/20 22:50:54 Remove this include, since you're not actually usi
tbansal1 2015/11/23 17:52:22 Done.
namespace {
@@ -33,7 +34,7 @@ DataUseTabModel::DataUseTabModel(
const ExternalDataUseObserver* data_use_observer,
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
: data_use_observer_(data_use_observer),
- observer_list_(new base::ObserverListThreadSafe<TabDataUseObserver>),
+ ui_task_runner_(ui_task_runner),
weak_factory_(this) {}
DataUseTabModel::~DataUseTabModel() {
@@ -55,6 +56,7 @@ void DataUseTabModel::OnNavigationEvent(int32_t tab_id,
// TODO(rajendrant): implementation to use package.
switch (transition) {
case TRANSITION_OMNIBOX_SEARCH:
+ case TRANSITION_OMNIBOX_NAVIGATION:
case TRANSITION_FROM_EXTERNAL_APP: {
// Enter events.
std::string label;
@@ -69,7 +71,6 @@ void DataUseTabModel::OnNavigationEvent(int32_t tab_id,
}
case TRANSITION_FROM_NAVSUGGEST:
- case TRANSITION_OMNIBOX_NAVIGATION:
case TRANSITION_BOOKMARK:
case TRANSITION_HISTORY_ITEM:
case TRANSITION_TO_EXTERNAL_APP:
@@ -117,22 +118,34 @@ bool DataUseTabModel::GetLabelForDataUse(const data_usage::DataUse& data_use,
return false; // Tab session not found.
}
-void DataUseTabModel::AddObserver(TabDataUseObserver* observer) {
- observer_list_->AddObserver(observer);
+void DataUseTabModel::AddObserver(
+ const TabDataUseObserver* observer,
+ const base::WeakPtr<TabDataUseObserver>& weak_ptr_observer) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ observers_.insert(ObserverMap::value_type(observer, weak_ptr_observer));
}
-void DataUseTabModel::RemoveObserver(TabDataUseObserver* observer) {
- observer_list_->RemoveObserver(observer);
+void DataUseTabModel::RemoveObserver(const TabDataUseObserver* observer) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ observers_.erase(observer);
}
void DataUseTabModel::NotifyObserversOfTrackingStarting(int32_t tab_id) {
- observer_list_->Notify(FROM_HERE, &TabDataUseObserver::NotifyTrackingStarting,
- tab_id);
+ DCHECK(thread_checker_.CalledOnValidThread());
+ for (const auto& it : observers_) {
+ ui_task_runner_->PostTask(
+ FROM_HERE, base::Bind(&TabDataUseObserver::NotifyTrackingStarting,
+ it.second, tab_id));
+ }
}
void DataUseTabModel::NotifyObserversOfTrackingEnding(int32_t tab_id) {
- observer_list_->Notify(FROM_HERE, &TabDataUseObserver::NotifyTrackingEnding,
- tab_id);
+ DCHECK(thread_checker_.CalledOnValidThread());
+ for (const auto& it : observers_) {
+ ui_task_runner_->PostTask(
+ FROM_HERE, base::Bind(&TabDataUseObserver::NotifyTrackingEnding,
+ it.second, tab_id));
+ }
}
void DataUseTabModel::StartTrackingDataUse(int32_t tab_id,

Powered by Google App Engine
This is Rietveld 408576698