Chromium Code Reviews| Index: chrome/browser/profiles/profile_impl_io_data.cc |
| diff --git a/chrome/browser/profiles/profile_impl_io_data.cc b/chrome/browser/profiles/profile_impl_io_data.cc |
| index 6a68c08b8c0851fffb3f17d96fceb2aa496c40ff..1000176eaec8021771ef4ce6921c9957bee6f493 100644 |
| --- a/chrome/browser/profiles/profile_impl_io_data.cc |
| +++ b/chrome/browser/profiles/profile_impl_io_data.cc |
| @@ -65,6 +65,13 @@ |
| #include "net/url_request/url_request_job_factory_impl.h" |
| #include "storage/browser/quota/special_storage_policy.h" |
| +#if defined(OS_ANDROID) |
| +#include "chrome/browser/android/data_usage/data_use_tab_model.h" |
| +#include "chrome/browser/android/data_usage/data_use_ui_tab_model.h" |
| +#include "chrome/browser/android/data_usage/data_use_ui_tab_model_factory.h" |
| +#include "chrome/browser/android/data_usage/external_data_use_observer.h" |
| +#endif // defined(OS_ANDROID) |
| + |
| namespace { |
| net::BackendType ChooseCacheBackendType() { |
| @@ -91,6 +98,27 @@ net::BackendType ChooseCacheBackendType() { |
| #endif |
| } |
| +#if defined(OS_ANDROID) |
| +// Returns the weak pointer to DataUseTabModel, and adds |data_use_ui_tab_model| |
| +// as an observer to DataUseTabModel. Must be called only on IO thread. |
| +base::WeakPtr<chrome::android::DataUseTabModel> SetDataUseTabModelOnIOThread( |
| + IOThread* io_thread, |
| + base::WeakPtr<chrome::android::DataUseUITabModel> data_use_ui_tab_model) { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| + DCHECK(io_thread); |
| + DCHECK(io_thread->globals()); |
| + |
| + base::WeakPtr<chrome::android::DataUseTabModel> data_use_tab_model = |
| + io_thread->globals() |
| + ->external_data_use_observer->GetDataUseTabModel() |
| + ->GetWeakPtr(); |
| + if (data_use_tab_model) |
| + data_use_tab_model->AddObserver(data_use_ui_tab_model); |
| + return data_use_tab_model; |
| +} |
| + |
| +#endif // defined(OS_ANDROID) |
| + |
| } // namespace |
| using content::BrowserThread; |
| @@ -199,6 +227,23 @@ void ProfileImplIOData::Handle::Init( |
| profile_->GetRequestContext(), store.Pass(), |
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), |
| db_task_runner); |
| + |
| +#if defined(OS_ANDROID) |
| + // Pass the DataUseTabModel weak pointer to DataUseUITabModel, and register |
| + // DataUseUITabModel as a DataUseTabModel::TabDataUseObserver. |
| + chrome::android::DataUseUITabModel* data_use_ui_tab_model = |
| + chrome::android::DataUseUITabModelFactory::GetForBrowserContext(profile_); |
| + |
| + if (data_use_ui_tab_model && !io_data_->IsOffTheRecord()) { |
|
mmenke
2015/12/01 16:45:49
The off the record check isn't actually needed - I
tbansal1
2015/12/01 20:00:07
Got it. I previously verified that ProfileImplIODa
|
| + BrowserThread::PostTaskAndReplyWithResult( |
| + BrowserThread::IO, FROM_HERE, |
| + base::Bind(&SetDataUseTabModelOnIOThread, |
| + g_browser_process->io_thread(), |
| + data_use_ui_tab_model->GetWeakPtr()), |
| + base::Bind(&chrome::android::DataUseUITabModel::SetDataUseTabModel, |
| + data_use_ui_tab_model->GetWeakPtr())); |
|
mmenke
2015/12/01 16:45:49
Seems like we're micromanaging DataUseUITabModel's
tbansal1
2015/12/01 20:00:07
Done.
|
| + } |
| +#endif // defined(OS_ANDROID) |
| } |
| content::ResourceContext* |