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..1cac446d7fcd6ddada5a6b1d1997d28632b4711b 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,28 @@ 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); |
| + |
| + if (!io_thread || !io_thread->globals()) |
|
sclittle
2015/11/30 22:33:38
nit: It looks like |io_thread| and |io_thread->glo
tbansal1
2015/11/30 22:59:09
Done.
|
| + return base::WeakPtr<chrome::android::DataUseTabModel>(); |
| + |
| + 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 +228,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()) { |
| + 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())); |
| + } |
| +#endif // defined(OS_ANDROID) |
| } |
| content::ResourceContext* |