| 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 <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 | 255 |
| 256 OfflinePageBridge::OfflinePageBridge(JNIEnv* env, | 256 OfflinePageBridge::OfflinePageBridge(JNIEnv* env, |
| 257 content::BrowserContext* browser_context, | 257 content::BrowserContext* browser_context, |
| 258 OfflinePageModel* offline_page_model) | 258 OfflinePageModel* offline_page_model) |
| 259 : browser_context_(browser_context), | 259 : browser_context_(browser_context), |
| 260 offline_page_model_(offline_page_model) { | 260 offline_page_model_(offline_page_model) { |
| 261 ScopedJavaLocalRef<jobject> j_offline_page_bridge = | 261 ScopedJavaLocalRef<jobject> j_offline_page_bridge = |
| 262 Java_OfflinePageBridge_create(env, reinterpret_cast<jlong>(this)); | 262 Java_OfflinePageBridge_create(env, reinterpret_cast<jlong>(this)); |
| 263 java_ref_.Reset(j_offline_page_bridge); | 263 java_ref_.Reset(j_offline_page_bridge); |
| 264 | 264 |
| 265 NotifyIfDoneLoading(); | |
| 266 offline_page_model_->AddObserver(this); | 265 offline_page_model_->AddObserver(this); |
| 267 } | 266 } |
| 268 | 267 |
| 269 OfflinePageBridge::~OfflinePageBridge() { | 268 OfflinePageBridge::~OfflinePageBridge() { |
| 270 JNIEnv* env = base::android::AttachCurrentThread(); | 269 JNIEnv* env = base::android::AttachCurrentThread(); |
| 271 | 270 |
| 272 // Native shutdown causes the destruction of |this|. | 271 // Native shutdown causes the destruction of |this|. |
| 273 Java_OfflinePageBridge_offlinePageBridgeDestroyed(env, java_ref_); | 272 Java_OfflinePageBridge_offlinePageBridgeDestroyed(env, java_ref_); |
| 274 } | 273 } |
| 275 | 274 |
| 276 void OfflinePageBridge::OfflinePageModelLoaded(OfflinePageModel* model) { | |
| 277 DCHECK_EQ(offline_page_model_, model); | |
| 278 NotifyIfDoneLoading(); | |
| 279 } | |
| 280 | |
| 281 void OfflinePageBridge::OfflinePageAdded(OfflinePageModel* model, | 275 void OfflinePageBridge::OfflinePageAdded(OfflinePageModel* model, |
| 282 const OfflinePageItem& added_page) { | 276 const OfflinePageItem& added_page) { |
| 283 DCHECK_EQ(offline_page_model_, model); | 277 DCHECK_EQ(offline_page_model_, model); |
| 284 JNIEnv* env = base::android::AttachCurrentThread(); | 278 JNIEnv* env = base::android::AttachCurrentThread(); |
| 285 | 279 |
| 286 Java_OfflinePageBridge_offlinePageAdded( | 280 Java_OfflinePageBridge_offlinePageAdded( |
| 287 env, java_ref_, ToJavaOfflinePageItem(env, added_page)); | 281 env, java_ref_, ToJavaOfflinePageItem(env, added_page)); |
| 288 } | 282 } |
| 289 | 283 |
| 290 void OfflinePageBridge::OfflinePageDeleted(int64_t offline_id, | 284 void OfflinePageBridge::OfflinePageDeleted(int64_t offline_id, |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 // Callback with null to signal that results are unavailable. | 543 // Callback with null to signal that results are unavailable. |
| 550 const JavaParamRef<jobject> empty_result(nullptr); | 544 const JavaParamRef<jobject> empty_result(nullptr); |
| 551 base::android::RunCallbackAndroid(j_callback_obj, empty_result); | 545 base::android::RunCallbackAndroid(j_callback_obj, empty_result); |
| 552 return; | 546 return; |
| 553 } | 547 } |
| 554 | 548 |
| 555 coordinator->RemoveRequests( | 549 coordinator->RemoveRequests( |
| 556 request_ids, base::Bind(&OnRemoveRequestsDone, j_callback_ref)); | 550 request_ids, base::Bind(&OnRemoveRequestsDone, j_callback_ref)); |
| 557 } | 551 } |
| 558 | 552 |
| 559 void OfflinePageBridge::NotifyIfDoneLoading() const { | |
| 560 if (!offline_page_model_->is_loaded()) | |
| 561 return; | |
| 562 JNIEnv* env = base::android::AttachCurrentThread(); | |
| 563 Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_); | |
| 564 } | |
| 565 | |
| 566 | |
| 567 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( | 553 ScopedJavaLocalRef<jobject> OfflinePageBridge::CreateClientId( |
| 568 JNIEnv* env, | 554 JNIEnv* env, |
| 569 const ClientId& client_id) const { | 555 const ClientId& client_id) const { |
| 570 return Java_OfflinePageBridge_createClientId( | 556 return Java_OfflinePageBridge_createClientId( |
| 571 env, ConvertUTF8ToJavaString(env, client_id.name_space), | 557 env, ConvertUTF8ToJavaString(env, client_id.name_space), |
| 572 ConvertUTF8ToJavaString(env, client_id.id)); | 558 ConvertUTF8ToJavaString(env, client_id.id)); |
| 573 } | 559 } |
| 574 | 560 |
| 575 bool RegisterOfflinePageBridge(JNIEnv* env) { | 561 bool RegisterOfflinePageBridge(JNIEnv* env) { |
| 576 return RegisterNativesImpl(env); | 562 return RegisterNativesImpl(env); |
| 577 } | 563 } |
| 578 | 564 |
| 579 } // namespace android | 565 } // namespace android |
| 580 } // namespace offline_pages | 566 } // namespace offline_pages |
| OLD | NEW |