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

Unified Diff: chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc

Issue 2180973002: [Offline pages] Adapting OfflinePageDownloadBridge to DownloadUIAdapter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ui-adapter
Patch Set: Minor updates Created 4 years, 5 months 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/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 4667facf6abf7f4f228a0c682c9df5db1cbd42c6..44d9827d6dd86796205b8e5d4bc80512870d7a4a 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
@@ -7,10 +7,11 @@
#include <vector>
#include "base/android/jni_string.h"
+#include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_android.h"
-#include "components/offline_pages/offline_page_item.h"
-#include "content/public/browser/browser_context.h"
+#include "components/offline_pages/downloads/download_ui_item.h"
+#include "components/offline_pages/offline_page_model.h"
#include "jni/OfflinePageDownloadBridge_jni.h"
#include "net/base/filename_util.h"
@@ -25,36 +26,38 @@ namespace android {
namespace {
-void ToJavaOfflinePageDownloadItemList(
- JNIEnv* env,
- jobject j_result_obj,
- const std::vector<OfflinePageItem>& offline_pages) {
- for (const OfflinePageItem& offline_page : offline_pages) {
+void ToJavaOfflinePageDownloadItemList(JNIEnv* env,
+ jobject j_result_obj,
+ const DownloadUIItemsMap& items_map) {
+ for (const auto& guid_item_pair : items_map) {
+ const DownloadUIItem& item = *(guid_item_pair.second.get());
Java_OfflinePageDownloadBridge_createDownloadItemAndAddToList(
- env, j_result_obj,
- ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(),
- ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(),
- ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(),
- offline_page.creation_time.ToJavaTime(), offline_page.file_size);
+ env, j_result_obj, ConvertUTF8ToJavaString(env, item.guid).obj(),
+ ConvertUTF8ToJavaString(env, item.url.spec()).obj(),
+ ConvertUTF8ToJavaString(env, item.target_path.value()).obj(),
+ item.start_time.ToJavaTime(), item.total_bytes);
}
}
ScopedJavaLocalRef<jobject> ToJavaOfflinePageDownloadItem(
JNIEnv* env,
- const OfflinePageItem& offline_page) {
+ const DownloadUIItem& item) {
return Java_OfflinePageDownloadBridge_createDownloadItem(
- env, ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(),
- ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(),
- ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(),
- offline_page.creation_time.ToJavaTime(), offline_page.file_size);
+ env, ConvertUTF8ToJavaString(env, item.guid).obj(),
+ ConvertUTF8ToJavaString(env, item.url.spec()).obj(),
+ ConvertUTF8ToJavaString(env, item.target_path.value()).obj(),
+ item.start_time.ToJavaTime(), item.total_bytes);
}
-
} // namespace
OfflinePageDownloadBridge::OfflinePageDownloadBridge(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
- content::BrowserContext* browser_context) {}
+ DownloadUIAdapter* download_ui_adapter)
+ : download_ui_adapter_(download_ui_adapter) {
+ DCHECK(download_ui_adapter_);
+ download_ui_adapter_->AddObserver(this);
+}
OfflinePageDownloadBridge::~OfflinePageDownloadBridge() {}
@@ -65,6 +68,7 @@ bool OfflinePageDownloadBridge::Register(JNIEnv* env) {
void OfflinePageDownloadBridge::Destroy(JNIEnv* env,
const JavaParamRef<jobject>&) {
+ download_ui_adapter_->RemoveObserver(this);
delete this;
}
@@ -74,21 +78,20 @@ void OfflinePageDownloadBridge::GetAllItems(
const JavaParamRef<jobject>& j_result_obj) {
DCHECK(j_result_obj);
- // Get the cached list of offline pages/download items here, and populate
- // result object.
- std::vector<OfflinePageItem> offline_pages;
- ToJavaOfflinePageDownloadItemList(env, j_result_obj, offline_pages);
+ const DownloadUIItemsMap& items_map = download_ui_adapter_->GetAllItems();
+ ToJavaOfflinePageDownloadItemList(env, j_result_obj, items_map);
}
ScopedJavaLocalRef<jobject> OfflinePageDownloadBridge::GetItemByGuid(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
const base::android::JavaParamRef<jstring>& j_guid) {
- OfflinePageItem offline_page;
- return ToJavaOfflinePageDownloadItem(env, offline_page);
+ std::string guid = ConvertJavaStringToUTF8(env, j_guid);
+ const DownloadUIItem* item = download_ui_adapter_->GetItem(guid);
+ return ToJavaOfflinePageDownloadItem(env, *item);
}
-void OfflinePageDownloadBridge::OnOfflinePageDownloadBridgeLoaded() {
+void OfflinePageDownloadBridge::ItemsLoaded() {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
if (obj.is_null())
@@ -96,8 +99,7 @@ void OfflinePageDownloadBridge::OnOfflinePageDownloadBridgeLoaded() {
Java_OfflinePageDownloadBridge_downloadItemsLoaded(env, obj.obj());
}
-void OfflinePageDownloadBridge::OnOfflinePageDownloadItemAdded(
- const OfflinePageItem& item) {
+void OfflinePageDownloadBridge::ItemAdded(const DownloadUIItem& item) {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
if (obj.is_null())
@@ -106,8 +108,7 @@ void OfflinePageDownloadBridge::OnOfflinePageDownloadItemAdded(
env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj());
}
-void OfflinePageDownloadBridge::OnOfflinePageDownloadItemDeleted(
- const std::string& guid) {
+void OfflinePageDownloadBridge::ItemDeleted(const std::string& guid) {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
if (obj.is_null())
@@ -116,8 +117,7 @@ void OfflinePageDownloadBridge::OnOfflinePageDownloadItemDeleted(
env, obj.obj(), ConvertUTF8ToJavaString(env, guid).obj());
}
-void OfflinePageDownloadBridge::OnOfflinePageDownloadItemUpdated(
- const OfflinePageItem& item) {
+void OfflinePageDownloadBridge::ItemUpdated(const DownloadUIItem& item) {
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
if (obj.is_null())
@@ -129,8 +129,15 @@ void OfflinePageDownloadBridge::OnOfflinePageDownloadItemUpdated(
static jlong Init(JNIEnv* env,
const JavaParamRef<jobject>& obj,
const JavaParamRef<jobject>& j_profile) {
- return reinterpret_cast<jlong>(new OfflinePageDownloadBridge(
- env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
+ Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
+ OfflinePageModel* offline_page_model =
+ OfflinePageModelFactory::GetForBrowserContext(profile);
+
+ DownloadUIAdapter* adapter =
+ DownloadUIAdapter::FromOfflinePageModel(offline_page_model);
+
+ return reinterpret_cast<jlong>(
+ new OfflinePageDownloadBridge(env, obj, adapter));
}
} // namespace android

Powered by Google App Engine
This is Rietveld 408576698