| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/offline_page_bridge.h" | 5 #include "chrome/browser/android/offline_pages/offline_page_bridge.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
| 11 #include "base/android/jni_string.h" | 11 #include "base/android/jni_string.h" |
| 12 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" | 12 #include "chrome/browser/android/offline_pages/offline_page_mhtml_archiver.h" |
| 13 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" | 13 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" |
| 14 #include "chrome/browser/android/offline_pages/offline_page_utils.h" | 14 #include "chrome/browser/android/offline_pages/offline_page_utils.h" |
| 15 #include "chrome/browser/android/offline_pages/request_coordinator_factory.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/profiles/profile_android.h" | 17 #include "chrome/browser/profiles/profile_android.h" |
| 18 #include "components/offline_pages/background/request_coordinator.h" |
| 19 #include "components/offline_pages/background/save_page_request.h" |
| 17 #include "components/offline_pages/offline_page_feature.h" | 20 #include "components/offline_pages/offline_page_feature.h" |
| 18 #include "components/offline_pages/offline_page_item.h" | 21 #include "components/offline_pages/offline_page_item.h" |
| 19 #include "components/offline_pages/offline_page_model.h" | 22 #include "components/offline_pages/offline_page_model.h" |
| 20 #include "components/offline_pages/proto/offline_pages.pb.h" | 23 #include "components/offline_pages/proto/offline_pages.pb.h" |
| 21 #include "content/public/browser/browser_context.h" | 24 #include "content/public/browser/browser_context.h" |
| 22 #include "content/public/browser/web_contents.h" | 25 #include "content/public/browser/web_contents.h" |
| 23 #include "jni/OfflinePageBridge_jni.h" | 26 #include "jni/OfflinePageBridge_jni.h" |
| 24 #include "net/base/filename_util.h" | 27 #include "net/base/filename_util.h" |
| 25 | 28 |
| 26 using base::android::ConvertJavaStringToUTF8; | 29 using base::android::ConvertJavaStringToUTF8; |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 232 ScopedJavaGlobalRef<jobject> j_callback_ref; | 235 ScopedJavaGlobalRef<jobject> j_callback_ref; |
| 233 j_callback_ref.Reset(env, j_callback_obj); | 236 j_callback_ref.Reset(env, j_callback_obj); |
| 234 | 237 |
| 235 offline_page_model_->GetAllPages( | 238 offline_page_model_->GetAllPages( |
| 236 base::Bind(&GetAllPagesCallback, j_result_ref, j_callback_ref)); | 239 base::Bind(&GetAllPagesCallback, j_result_ref, j_callback_ref)); |
| 237 } | 240 } |
| 238 | 241 |
| 239 ScopedJavaLocalRef<jlongArray> OfflinePageBridge::GetOfflineIdsForClientId( | 242 ScopedJavaLocalRef<jlongArray> OfflinePageBridge::GetOfflineIdsForClientId( |
| 240 JNIEnv* env, | 243 JNIEnv* env, |
| 241 const JavaParamRef<jobject>& obj, | 244 const JavaParamRef<jobject>& obj, |
| 242 const JavaParamRef<jstring>& j_client_id_namespace, | 245 const JavaParamRef<jstring>& j_namespace, |
| 243 const JavaParamRef<jstring>& j_client_id) { | 246 const JavaParamRef<jstring>& j_client_id) { |
| 244 DCHECK(offline_page_model_->is_loaded()); | 247 DCHECK(offline_page_model_->is_loaded()); |
| 245 offline_pages::ClientId client_id; | 248 offline_pages::ClientId client_id; |
| 246 client_id.name_space = ConvertJavaStringToUTF8(env, j_client_id_namespace); | 249 client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace); |
| 247 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); | 250 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); |
| 248 | 251 |
| 249 std::vector<int64_t> results = | 252 std::vector<int64_t> results = |
| 250 offline_page_model_->MaybeGetOfflineIdsForClientId(client_id); | 253 offline_page_model_->MaybeGetOfflineIdsForClientId(client_id); |
| 251 | 254 |
| 252 return base::android::ToJavaLongArray(env, results); | 255 return base::android::ToJavaLongArray(env, results); |
| 253 } | 256 } |
| 254 | 257 |
| 255 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( | 258 ScopedJavaLocalRef<jobject> OfflinePageBridge::GetPageByOfflineId( |
| 256 JNIEnv* env, | 259 JNIEnv* env, |
| (...skipping 28 matching lines...) Expand all Loading... |
| 285 if (!offline_page) | 288 if (!offline_page) |
| 286 return ScopedJavaLocalRef<jobject>(); | 289 return ScopedJavaLocalRef<jobject>(); |
| 287 return CreateOfflinePageItem(env, *offline_page); | 290 return CreateOfflinePageItem(env, *offline_page); |
| 288 } | 291 } |
| 289 | 292 |
| 290 void OfflinePageBridge::SavePage( | 293 void OfflinePageBridge::SavePage( |
| 291 JNIEnv* env, | 294 JNIEnv* env, |
| 292 const JavaParamRef<jobject>& obj, | 295 const JavaParamRef<jobject>& obj, |
| 293 const JavaParamRef<jobject>& j_callback_obj, | 296 const JavaParamRef<jobject>& j_callback_obj, |
| 294 const JavaParamRef<jobject>& j_web_contents, | 297 const JavaParamRef<jobject>& j_web_contents, |
| 295 const JavaParamRef<jstring>& j_client_id_namespace, | 298 const JavaParamRef<jstring>& j_namespace, |
| 296 const JavaParamRef<jstring>& j_client_id) { | 299 const JavaParamRef<jstring>& j_client_id) { |
| 297 DCHECK(j_callback_obj); | 300 DCHECK(j_callback_obj); |
| 298 DCHECK(j_web_contents); | 301 DCHECK(j_web_contents); |
| 299 | 302 |
| 300 ScopedJavaGlobalRef<jobject> j_callback_ref; | 303 ScopedJavaGlobalRef<jobject> j_callback_ref; |
| 301 j_callback_ref.Reset(env, j_callback_obj); | 304 j_callback_ref.Reset(env, j_callback_obj); |
| 302 | 305 |
| 303 content::WebContents* web_contents = | 306 content::WebContents* web_contents = |
| 304 content::WebContents::FromJavaWebContents(j_web_contents); | 307 content::WebContents::FromJavaWebContents(j_web_contents); |
| 305 GURL url(web_contents->GetLastCommittedURL()); | 308 GURL url(web_contents->GetLastCommittedURL()); |
| 306 | 309 |
| 307 std::unique_ptr<OfflinePageArchiver> archiver( | 310 std::unique_ptr<OfflinePageArchiver> archiver( |
| 308 new OfflinePageMHTMLArchiver(web_contents)); | 311 new OfflinePageMHTMLArchiver(web_contents)); |
| 309 | 312 |
| 310 offline_pages::ClientId client_id; | 313 offline_pages::ClientId client_id; |
| 311 client_id.name_space = ConvertJavaStringToUTF8(env, j_client_id_namespace); | 314 client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace); |
| 312 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); | 315 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); |
| 313 | 316 |
| 314 offline_page_model_->SavePage( | 317 offline_page_model_->SavePage( |
| 315 url, client_id, std::move(archiver), | 318 url, client_id, std::move(archiver), |
| 316 base::Bind(&SavePageCallback, j_callback_ref, url)); | 319 base::Bind(&SavePageCallback, j_callback_ref, url)); |
| 317 } | 320 } |
| 318 | 321 |
| 322 void OfflinePageBridge::SavePageLater( |
| 323 JNIEnv* env, |
| 324 const JavaParamRef<jobject>& obj, |
| 325 const JavaParamRef<jstring>& j_url, |
| 326 const JavaParamRef<jstring>& j_namespace, |
| 327 const JavaParamRef<jstring>& j_client_id) { |
| 328 offline_pages::ClientId client_id; |
| 329 client_id.name_space = ConvertJavaStringToUTF8(env, j_namespace); |
| 330 client_id.id = ConvertJavaStringToUTF8(env, j_client_id); |
| 331 |
| 332 RequestCoordinator* coordinator = |
| 333 offline_pages::RequestCoordinatorFactory::GetInstance()-> |
| 334 GetForBrowserContext(browser_context_); |
| 335 |
| 336 coordinator->SavePageLater( |
| 337 GURL(ConvertJavaStringToUTF8(env, j_url)), client_id); |
| 338 } |
| 339 |
| 319 void OfflinePageBridge::DeletePages( | 340 void OfflinePageBridge::DeletePages( |
| 320 JNIEnv* env, | 341 JNIEnv* env, |
| 321 const JavaParamRef<jobject>& obj, | 342 const JavaParamRef<jobject>& obj, |
| 322 const JavaParamRef<jobject>& j_callback_obj, | 343 const JavaParamRef<jobject>& j_callback_obj, |
| 323 const JavaParamRef<jlongArray>& offline_ids_array) { | 344 const JavaParamRef<jlongArray>& offline_ids_array) { |
| 324 DCHECK(j_callback_obj); | 345 DCHECK(j_callback_obj); |
| 325 | 346 |
| 326 ScopedJavaGlobalRef<jobject> j_callback_ref; | 347 ScopedJavaGlobalRef<jobject> j_callback_ref; |
| 327 j_callback_ref.Reset(env, j_callback_obj); | 348 j_callback_ref.Reset(env, j_callback_obj); |
| 328 | 349 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), | 399 ConvertUTF8ToJavaString(env, client_id.name_space).obj(), |
| 379 ConvertUTF8ToJavaString(env, client_id.id).obj()); | 400 ConvertUTF8ToJavaString(env, client_id.id).obj()); |
| 380 } | 401 } |
| 381 | 402 |
| 382 bool RegisterOfflinePageBridge(JNIEnv* env) { | 403 bool RegisterOfflinePageBridge(JNIEnv* env) { |
| 383 return RegisterNativesImpl(env); | 404 return RegisterNativesImpl(env); |
| 384 } | 405 } |
| 385 | 406 |
| 386 } // namespace android | 407 } // namespace android |
| 387 } // namespace offline_pages | 408 } // namespace offline_pages |
| OLD | NEW |