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

Side by Side Diff: chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc

Issue 2171963002: Offline Page download bridge (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressing comments from Dan 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/android/offline_pages/downloads/offline_page_download_b ridge.h"
6
7 #include <vector>
8
9 #include "base/android/jni_string.h"
10 #include "chrome/browser/profiles/profile.h"
11 #include "chrome/browser/profiles/profile_android.h"
12 #include "components/offline_pages/offline_page_item.h"
13 #include "content/public/browser/browser_context.h"
14 #include "jni/OfflinePageDownloadBridge_jni.h"
15 #include "net/base/filename_util.h"
16
17 using base::android::AttachCurrentThread;
18 using base::android::ConvertJavaStringToUTF8;
19 using base::android::ConvertUTF8ToJavaString;
20 using base::android::ScopedJavaGlobalRef;
21 using base::android::ScopedJavaLocalRef;
22
23 namespace offline_pages {
24 namespace android {
25
26 namespace {
27
28 void ToJavaOfflinePageDownloadItemList(
29 JNIEnv* env,
30 jobject j_result_obj,
31 const std::vector<OfflinePageItem>& offline_pages) {
32 for (const OfflinePageItem& offline_page : offline_pages) {
33 Java_OfflinePageDownloadBridge_createDownloadItemAndAddToList(
34 env, j_result_obj,
35 ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(),
36 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(),
37 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(),
38 offline_page.creation_time.ToJavaTime(), offline_page.file_size);
39 }
40 }
41
42 ScopedJavaLocalRef<jobject> ToJavaOfflinePageDownloadItem(
43 JNIEnv* env,
44 const OfflinePageItem& offline_page) {
45 return Java_OfflinePageDownloadBridge_createDownloadItem(
46 env, ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(),
47 ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(),
48 ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(),
49 offline_page.creation_time.ToJavaTime(), offline_page.file_size);
50 }
51
52 } // namespace
53
54 OfflinePageDownloadBridge::OfflinePageDownloadBridge(
55 JNIEnv* env,
56 const JavaParamRef<jobject>& obj,
57 content::BrowserContext* browser_context) {}
58
59 OfflinePageDownloadBridge::~OfflinePageDownloadBridge() {}
60
61 // static
62 bool OfflinePageDownloadBridge::Register(JNIEnv* env) {
63 return RegisterNativesImpl(env);
64 }
65
66 void OfflinePageDownloadBridge::Destroy(JNIEnv* env,
67 const JavaParamRef<jobject>&) {
68 delete this;
69 }
70
71 void OfflinePageDownloadBridge::GetAllItems(
72 JNIEnv* env,
73 const JavaParamRef<jobject>& obj,
74 const JavaParamRef<jobject>& j_result_obj) {
75 DCHECK(j_result_obj);
76
77 // Get the cached list of offline pages/download items here, and populate
78 // result object.
79 std::vector<OfflinePageItem> offline_pages;
80 ToJavaOfflinePageDownloadItemList(env, j_result_obj, offline_pages);
81 }
82
83 ScopedJavaLocalRef<jobject> OfflinePageDownloadBridge::GetItemByGuid(
84 JNIEnv* env,
85 const JavaParamRef<jobject>& obj,
86 const base::android::JavaParamRef<jstring>& j_guid) {
87 OfflinePageItem offline_page;
88 return ToJavaOfflinePageDownloadItem(env, offline_page);
89 }
90
91 void OfflinePageDownloadBridge::OnOfflinePageDownloadBridgeLoaded() {
92 JNIEnv* env = AttachCurrentThread();
93 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
94 if (obj.is_null())
95 return;
96 Java_OfflinePageDownloadBridge_downloadItemsLoaded(env, obj.obj());
97 }
98
99 void OfflinePageDownloadBridge::OnOfflinePageDownloadItemAdded(
100 const OfflinePageItem& item) {
101 JNIEnv* env = AttachCurrentThread();
102 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
103 if (obj.is_null())
104 return;
105 Java_OfflinePageDownloadBridge_downloadItemAdded(
106 env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj());
107 }
108
109 void OfflinePageDownloadBridge::OnOfflinePageDownloadItemDeleted(
110 const std::string& guid) {
111 JNIEnv* env = AttachCurrentThread();
112 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
113 if (obj.is_null())
114 return;
115 Java_OfflinePageDownloadBridge_downloadItemDeleted(
116 env, obj.obj(), ConvertUTF8ToJavaString(env, guid).obj());
117 }
118
119 void OfflinePageDownloadBridge::OnOfflinePageDownloadItemUpdated(
120 const OfflinePageItem& item) {
121 JNIEnv* env = AttachCurrentThread();
122 ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env);
123 if (obj.is_null())
124 return;
125 Java_OfflinePageDownloadBridge_downloadItemUpdated(
126 env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj());
127 }
128
129 static jlong Init(JNIEnv* env,
130 const JavaParamRef<jobject>& obj,
131 const JavaParamRef<jobject>& j_profile) {
132 return reinterpret_cast<jlong>(new OfflinePageDownloadBridge(
133 env, obj, ProfileAndroid::FromProfileAndroid(j_profile)));
134 }
135
136 } // namespace android
137 } // namespace offline_pages
OLDNEW
« no previous file with comments | « chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698