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

Side by Side 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, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/offline_pages/downloads/offline_page_download_b ridge.h" 5 #include "chrome/browser/android/offline_pages/downloads/offline_page_download_b ridge.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/profiles/profile_android.h" 12 #include "chrome/browser/profiles/profile_android.h"
12 #include "components/offline_pages/offline_page_item.h" 13 #include "components/offline_pages/downloads/download_ui_item.h"
13 #include "content/public/browser/browser_context.h" 14 #include "components/offline_pages/offline_page_model.h"
14 #include "jni/OfflinePageDownloadBridge_jni.h" 15 #include "jni/OfflinePageDownloadBridge_jni.h"
15 #include "net/base/filename_util.h" 16 #include "net/base/filename_util.h"
16 17
17 using base::android::AttachCurrentThread; 18 using base::android::AttachCurrentThread;
18 using base::android::ConvertJavaStringToUTF8; 19 using base::android::ConvertJavaStringToUTF8;
19 using base::android::ConvertUTF8ToJavaString; 20 using base::android::ConvertUTF8ToJavaString;
20 using base::android::ScopedJavaGlobalRef; 21 using base::android::ScopedJavaGlobalRef;
21 using base::android::ScopedJavaLocalRef; 22 using base::android::ScopedJavaLocalRef;
22 23
23 namespace offline_pages { 24 namespace offline_pages {
24 namespace android { 25 namespace android {
25 26
26 namespace { 27 namespace {
27 28
28 void ToJavaOfflinePageDownloadItemList( 29 void ToJavaOfflinePageDownloadItemList(JNIEnv* env,
29 JNIEnv* env, 30 jobject j_result_obj,
30 jobject j_result_obj, 31 const DownloadUIItemsMap& items_map) {
31 const std::vector<OfflinePageItem>& offline_pages) { 32 for (const auto& guid_item_pair : items_map) {
32 for (const OfflinePageItem& offline_page : offline_pages) { 33 const DownloadUIItem& item = *(guid_item_pair.second.get());
33 Java_OfflinePageDownloadBridge_createDownloadItemAndAddToList( 34 Java_OfflinePageDownloadBridge_createDownloadItemAndAddToList(
34 env, j_result_obj, 35 env, j_result_obj, ConvertUTF8ToJavaString(env, item.guid).obj(),
35 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), 36 ConvertUTF8ToJavaString(env, item.url.spec()).obj(),
36 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), 37 ConvertUTF8ToJavaString(env, item.target_path.value()).obj(),
37 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), 38 item.start_time.ToJavaTime(), item.total_bytes);
38 offline_page.creation_time.ToJavaTime(), offline_page.file_size);
39 } 39 }
40 } 40 }
41 41
42 ScopedJavaLocalRef<jobject> ToJavaOfflinePageDownloadItem( 42 ScopedJavaLocalRef<jobject> ToJavaOfflinePageDownloadItem(
43 JNIEnv* env, 43 JNIEnv* env,
44 const OfflinePageItem& offline_page) { 44 const DownloadUIItem& item) {
45 return Java_OfflinePageDownloadBridge_createDownloadItem( 45 return Java_OfflinePageDownloadBridge_createDownloadItem(
46 env, ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), 46 env, ConvertUTF8ToJavaString(env, item.guid).obj(),
47 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), 47 ConvertUTF8ToJavaString(env, item.url.spec()).obj(),
48 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), 48 ConvertUTF8ToJavaString(env, item.target_path.value()).obj(),
49 offline_page.creation_time.ToJavaTime(), offline_page.file_size); 49 item.start_time.ToJavaTime(), item.total_bytes);
50 } 50 }
51
52 } // namespace 51 } // namespace
53 52
54 OfflinePageDownloadBridge::OfflinePageDownloadBridge( 53 OfflinePageDownloadBridge::OfflinePageDownloadBridge(
55 JNIEnv* env, 54 JNIEnv* env,
56 const JavaParamRef<jobject>& obj, 55 const JavaParamRef<jobject>& obj,
57 content::BrowserContext* browser_context) {} 56 DownloadUIAdapter* download_ui_adapter)
57 : download_ui_adapter_(download_ui_adapter) {
58 DCHECK(download_ui_adapter_);
59 download_ui_adapter_->AddObserver(this);
60 }
58 61
59 OfflinePageDownloadBridge::~OfflinePageDownloadBridge() {} 62 OfflinePageDownloadBridge::~OfflinePageDownloadBridge() {}
60 63
61 // static 64 // static
62 bool OfflinePageDownloadBridge::Register(JNIEnv* env) { 65 bool OfflinePageDownloadBridge::Register(JNIEnv* env) {
63 return RegisterNativesImpl(env); 66 return RegisterNativesImpl(env);
64 } 67 }
65 68
66 void OfflinePageDownloadBridge::Destroy(JNIEnv* env, 69 void OfflinePageDownloadBridge::Destroy(JNIEnv* env,
67 const JavaParamRef<jobject>&) { 70 const JavaParamRef<jobject>&) {
71 download_ui_adapter_->RemoveObserver(this);
68 delete this; 72 delete this;
69 } 73 }
70 74
71 void OfflinePageDownloadBridge::GetAllItems( 75 void OfflinePageDownloadBridge::GetAllItems(
72 JNIEnv* env, 76 JNIEnv* env,
73 const JavaParamRef<jobject>& obj, 77 const JavaParamRef<jobject>& obj,
74 const JavaParamRef<jobject>& j_result_obj) { 78 const JavaParamRef<jobject>& j_result_obj) {
75 DCHECK(j_result_obj); 79 DCHECK(j_result_obj);
76 80
77 // Get the cached list of offline pages/download items here, and populate 81 const DownloadUIItemsMap& items_map = download_ui_adapter_->GetAllItems();
78 // result object. 82 ToJavaOfflinePageDownloadItemList(env, j_result_obj, items_map);
79 std::vector<OfflinePageItem> offline_pages;
80 ToJavaOfflinePageDownloadItemList(env, j_result_obj, offline_pages);
81 } 83 }
82 84
83 ScopedJavaLocalRef<jobject> OfflinePageDownloadBridge::GetItemByGuid( 85 ScopedJavaLocalRef<jobject> OfflinePageDownloadBridge::GetItemByGuid(
84 JNIEnv* env, 86 JNIEnv* env,
85 const JavaParamRef<jobject>& obj, 87 const JavaParamRef<jobject>& obj,
86 const base::android::JavaParamRef<jstring>& j_guid) { 88 const base::android::JavaParamRef<jstring>& j_guid) {
87 OfflinePageItem offline_page; 89 std::string guid = ConvertJavaStringToUTF8(env, j_guid);
88 return ToJavaOfflinePageDownloadItem(env, offline_page); 90 const DownloadUIItem* item = download_ui_adapter_->GetItem(guid);
91 return ToJavaOfflinePageDownloadItem(env, *item);
89 } 92 }
90 93
91 void OfflinePageDownloadBridge::OnOfflinePageDownloadBridgeLoaded() { 94 void OfflinePageDownloadBridge::ItemsLoaded() {
92 JNIEnv* env = AttachCurrentThread(); 95 JNIEnv* env = AttachCurrentThread();
93 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 96 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
94 if (obj.is_null()) 97 if (obj.is_null())
95 return; 98 return;
96 Java_OfflinePageDownloadBridge_downloadItemsLoaded(env, obj.obj()); 99 Java_OfflinePageDownloadBridge_downloadItemsLoaded(env, obj.obj());
97 } 100 }
98 101
99 void OfflinePageDownloadBridge::OnOfflinePageDownloadItemAdded( 102 void OfflinePageDownloadBridge::ItemAdded(const DownloadUIItem& item) {
100 const OfflinePageItem& item) {
101 JNIEnv* env = AttachCurrentThread(); 103 JNIEnv* env = AttachCurrentThread();
102 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 104 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
103 if (obj.is_null()) 105 if (obj.is_null())
104 return; 106 return;
105 Java_OfflinePageDownloadBridge_downloadItemAdded( 107 Java_OfflinePageDownloadBridge_downloadItemAdded(
106 env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj()); 108 env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj());
107 } 109 }
108 110
109 void OfflinePageDownloadBridge::OnOfflinePageDownloadItemDeleted( 111 void OfflinePageDownloadBridge::ItemDeleted(const std::string& guid) {
110 const std::string& guid) {
111 JNIEnv* env = AttachCurrentThread(); 112 JNIEnv* env = AttachCurrentThread();
112 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 113 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
113 if (obj.is_null()) 114 if (obj.is_null())
114 return; 115 return;
115 Java_OfflinePageDownloadBridge_downloadItemDeleted( 116 Java_OfflinePageDownloadBridge_downloadItemDeleted(
116 env, obj.obj(), ConvertUTF8ToJavaString(env, guid).obj()); 117 env, obj.obj(), ConvertUTF8ToJavaString(env, guid).obj());
117 } 118 }
118 119
119 void OfflinePageDownloadBridge::OnOfflinePageDownloadItemUpdated( 120 void OfflinePageDownloadBridge::ItemUpdated(const DownloadUIItem& item) {
120 const OfflinePageItem& item) {
121 JNIEnv* env = AttachCurrentThread(); 121 JNIEnv* env = AttachCurrentThread();
122 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); 122 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
123 if (obj.is_null()) 123 if (obj.is_null())
124 return; 124 return;
125 Java_OfflinePageDownloadBridge_downloadItemUpdated( 125 Java_OfflinePageDownloadBridge_downloadItemUpdated(
126 env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj()); 126 env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj());
127 } 127 }
128 128
129 static jlong Init(JNIEnv* env, 129 static jlong Init(JNIEnv* env,
130 const JavaParamRef<jobject>& obj, 130 const JavaParamRef<jobject>& obj,
131 const JavaParamRef<jobject>& j_profile) { 131 const JavaParamRef<jobject>& j_profile) {
132 return reinterpret_cast<jlong>(new OfflinePageDownloadBridge( 132 Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
133 env, obj, ProfileAndroid::FromProfileAndroid(j_profile))); 133 OfflinePageModel* offline_page_model =
134 OfflinePageModelFactory::GetForBrowserContext(profile);
135
136 DownloadUIAdapter* adapter =
137 DownloadUIAdapter::FromOfflinePageModel(offline_page_model);
138
139 return reinterpret_cast<jlong>(
140 new OfflinePageDownloadBridge(env, obj, adapter));
134 } 141 }
135 142
136 } // namespace android 143 } // namespace android
137 } // namespace offline_pages 144 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698