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

Unified Diff: chrome/browser/android/offline_pages/cct_request_observer.cc

Issue 2888273003: [Offline Pages] Add an observer for requests in the CCT namespace. (Closed)
Patch Set: comments. Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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..e1f088dac71c3b748ebef394f9a15e31d0d97408
--- /dev/null
+++ b/chrome/browser/android/offline_pages/cct_request_observer.cc
@@ -0,0 +1,70 @@
+// 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) {
+ if (!IsOfflinePagesCTEnabled())
+ return;
+
+ 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(static_cast<int>(status)),
+ 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

Powered by Google App Engine
This is Rietveld 408576698