Chromium Code Reviews| Index: chrome/browser/android/offline_pages/cct_request_observer.cc |
| diff --git a/chrome/browser/android/offline_pages/cct_request_observer.cc b/chrome/browser/android/offline_pages/cct_request_observer.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..95522e6bcd967b8a1c20adf9189e897cdb13ebcc |
| --- /dev/null |
| +++ b/chrome/browser/android/offline_pages/cct_request_observer.cc |
| @@ -0,0 +1,64 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/android/offline_pages/cct_request_observer.h" |
| + |
| +#include "base/android/callback_android.h" |
| +#include "base/android/jni_int_wrapper.h" |
| +#include "base/android/jni_string.h" |
| +#include "chrome/browser/android/app_hooks.h" |
| +#include "components/offline_pages/core/client_namespace_constants.h" |
| +#include "components/offline_pages/core/offline_page_feature.h" |
| +#include "jni/CCTRequestStatus_jni.h" |
| + |
| +namespace offline_pages { |
| +namespace { |
| +int kCCTRequestObserverUserDataKey; |
| +} // namespace |
| + |
| +using chrome::android::AppHooks; |
| + |
| +// static |
| +void CCTRequestObserver::AttachToRequestCoordinator( |
| + RequestCoordinator* coordinator) { |
| + base::android::ScopedJavaLocalRef<jobject> callback = |
| + AppHooks::GetOfflinePagesCCTRequestDoneCallback(); |
| + if (!callback.obj()) |
| + return; |
| + |
| + auto request_observer = base::WrapUnique(new CCTRequestObserver(callback)); |
| + coordinator->AddObserver(request_observer.get()); |
| + coordinator->SetUserData(&kCCTRequestObserverUserDataKey, |
| + std::move(request_observer)); |
| +} |
| + |
| +CCTRequestObserver::~CCTRequestObserver() = default; |
| +CCTRequestObserver::CCTRequestObserver( |
| + base::android::ScopedJavaLocalRef<jobject> callback) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + j_callback_.Reset(env, callback.obj()); |
| +} |
| + |
| +void CCTRequestObserver::OnAdded(const SavePageRequest& request) {} |
| +void CCTRequestObserver::OnCompleted( |
| + const SavePageRequest& request, |
| + RequestNotifier::BackgroundSavePageResult status) { |
| + if (request.client_id().name_space != kCCTNamespace) { |
| + return; |
| + } |
| + |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + base::android::ScopedJavaLocalRef<jobject> callback_info = |
| + Java_CCTRequestStatus_create( |
| + env, as_jint((int)status), |
|
chili
2017/05/23 01:04:00
what's the difference between static_cast<int> and
dewittj
2017/05/23 16:03:05
You are right that I should have used static_cast.
David Trainor- moved to gerrit
2017/05/23 16:53:14
Yeah IIUC static_cast<> is a more restrictive form
|
| + base::android::ConvertUTF8ToJavaString(env, request.client_id().id)); |
| + |
| + base::android::RunCallbackAndroid(j_callback_, callback_info); |
| +} |
| + |
| +void CCTRequestObserver::OnChanged(const SavePageRequest& request) {} |
| +void CCTRequestObserver::OnNetworkProgress(const SavePageRequest& request, |
| + int64_t received_bytes) {} |
| + |
| +} // namespace offline_pages |