| Index: chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc
|
| diff --git a/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc b/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc
|
| index af41f9493f65d44ca74fb38ddb03a914282e6cff..9f0a34f099bf908f9b784bebb22bdf46ec38bce5 100644
|
| --- a/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc
|
| +++ b/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc
|
| @@ -42,11 +42,43 @@ using base::android::JavaParamRef;
|
| using base::android::ScopedJavaGlobalRef;
|
| using base::android::ScopedJavaLocalRef;
|
|
|
| +namespace {
|
| +const char kDownloadUIAdapterKey[] = "download-ui-adapter";
|
| +}
|
| +
|
| namespace offline_pages {
|
| namespace android {
|
|
|
| namespace {
|
|
|
| +class DownloadUIAdapterDelegate : public DownloadUIAdapter::Delegate {
|
| + public:
|
| + explicit DownloadUIAdapterDelegate(OfflinePageModel* model);
|
| +
|
| + // DownloadUIAdapter::Delegate
|
| + bool IsVisibleInUI(const ClientId& client_id) override;
|
| + bool IsTemporaryHiddenInUI(const ClientId& client_id) override;
|
| +
|
| + private:
|
| + // Not owned, cached service pointer.
|
| + OfflinePageModel* model_;
|
| +};
|
| +
|
| +DownloadUIAdapterDelegate::DownloadUIAdapterDelegate(OfflinePageModel* model)
|
| + : model_(model) {
|
| +}
|
| +
|
| +bool DownloadUIAdapterDelegate::IsVisibleInUI(const ClientId& client_id) {
|
| + const std::string& name_space = client_id.name_space;
|
| + return model_->GetPolicyController()->IsSupportedByDownload(name_space) &&
|
| + base::IsValidGUID(client_id.id);
|
| +}
|
| +
|
| +bool DownloadUIAdapterDelegate::IsTemporaryHiddenInUI(
|
| + const ClientId& client_id) {
|
| + return false;
|
| +}
|
| +
|
| // TODO(dewittj): Move to Download UI Adapter.
|
| content::WebContents* GetWebContentsFromJavaTab(
|
| const ScopedJavaGlobalRef<jobject>& j_tab_ref) {
|
| @@ -186,6 +218,9 @@ void ToJavaOfflinePageDownloadItemList(
|
| Java_OfflinePageDownloadBridge_createDownloadItemAndAddToList(
|
| env, j_result_obj, ConvertUTF8ToJavaString(env, item->guid),
|
| ConvertUTF8ToJavaString(env, item->url.spec()),
|
| + item->download_state,
|
| + item->download_progress.current,
|
| + item->download_progress.max,
|
| ConvertUTF16ToJavaString(env, item->title),
|
| ConvertUTF8ToJavaString(env, item->target_path.value()),
|
| item->start_time.ToJavaTime(), item->total_bytes);
|
| @@ -198,6 +233,9 @@ ScopedJavaLocalRef<jobject> ToJavaOfflinePageDownloadItem(
|
| return Java_OfflinePageDownloadBridge_createDownloadItem(
|
| env, ConvertUTF8ToJavaString(env, item.guid),
|
| ConvertUTF8ToJavaString(env, item.url.spec()),
|
| + item.download_state,
|
| + item.download_progress.current,
|
| + item.download_progress.max,
|
| ConvertUTF16ToJavaString(env, item.title),
|
| ConvertUTF8ToJavaString(env, item.target_path.value()),
|
| item.start_time.ToJavaTime(), item.total_bytes);
|
| @@ -442,8 +480,17 @@ static jlong Init(JNIEnv* env,
|
| OfflinePageModel* offline_page_model =
|
| OfflinePageModelFactory::GetForBrowserContext(browser_context);
|
|
|
| - DownloadUIAdapter* adapter =
|
| - DownloadUIAdapter::FromOfflinePageModel(offline_page_model);
|
| + DownloadUIAdapter* adapter = static_cast<DownloadUIAdapter*>(
|
| + offline_page_model->GetUserData(kDownloadUIAdapterKey));
|
| +
|
| + if (!adapter) {
|
| + RequestCoordinator* request_coordinator =
|
| + RequestCoordinatorFactory::GetForBrowserContext(browser_context);
|
| + adapter = new DownloadUIAdapter(
|
| + offline_page_model, request_coordinator,
|
| + base::MakeUnique<DownloadUIAdapterDelegate>(offline_page_model));
|
| + offline_page_model->SetUserData(kDownloadUIAdapterKey, adapter);
|
| + }
|
|
|
| return reinterpret_cast<jlong>(
|
| new OfflinePageDownloadBridge(env, obj, adapter, browser_context));
|
|
|