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

Unified Diff: chrome/browser/android/dom_distiller/feedback_reporter_android.cc

Issue 197473006: Add FeedbackReporter for reporting distillation quality. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed disableUI again and comment Created 6 years, 9 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
« no previous file with comments | « chrome/browser/android/dom_distiller/feedback_reporter_android.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/dom_distiller/feedback_reporter_android.cc
diff --git a/chrome/browser/android/dom_distiller/feedback_reporter_android.cc b/chrome/browser/android/dom_distiller/feedback_reporter_android.cc
new file mode 100644
index 0000000000000000000000000000000000000000..37867bb01d143edeae5f40a02546d543352f3576
--- /dev/null
+++ b/chrome/browser/android/dom_distiller/feedback_reporter_android.cc
@@ -0,0 +1,89 @@
+// Copyright 2014 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/dom_distiller/feedback_reporter_android.h"
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_string.h"
+#include "base/command_line.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/url_constants.h"
+#include "components/dom_distiller/core/feedback_reporter.h"
+#include "content/public/browser/navigation_details.h"
+#include "content/public/browser/navigation_entry.h"
+#include "content/public/browser/web_contents_observer.h"
+#include "content/public/common/frame_navigate_params.h"
+#include "jni/FeedbackReporter_jni.h"
+#include "url/gurl.h"
+
+using base::android::ConvertJavaStringToUTF8;
+using base::android::ConvertUTF8ToJavaString;
+
+namespace dom_distiller {
+
+namespace android {
+
+// static
+jboolean IsEnabled(JNIEnv* env, jclass clazz) {
+ return CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableDomDistiller);
+}
+
+// static
+void ReportQuality(JNIEnv* env, jclass clazz, jboolean j_good) {
+ FeedbackReporter::ReportQuality(j_good);
+}
+
+// static
+jboolean IsReportableUrl(JNIEnv* env, jclass clazz, jstring j_url_str) {
+ const std::string url_str = ConvertJavaStringToUTF8(env, j_url_str);
+ const GURL url(url_str);
+ if (!url.is_valid())
+ return false;
+ return url.scheme() == chrome::kDomDistillerScheme;
+}
+
+FeedbackReporterAndroid::FeedbackReporterAndroid(JNIEnv* env, jobject obj)
+ : weak_java_feedback_reporter_(env, obj) {}
+
+FeedbackReporterAndroid::~FeedbackReporterAndroid() {}
+
+void FeedbackReporterAndroid::Destroy(JNIEnv* env, jobject obj) { delete this; }
+
+void FeedbackReporterAndroid::ReplaceWebContents(JNIEnv* env,
+ jobject obj,
+ jobject jweb_contents) {
+ content::WebContents* web_contents =
+ content::WebContents::FromJavaWebContents(jweb_contents);
+ Observe(web_contents);
+}
+
+void FeedbackReporterAndroid::DidNavigateMainFrame(
+ const content::LoadCommittedDetails& details,
+ const content::FrameNavigateParams& params) {
+ JNIEnv* env = base::android::AttachCurrentThread();
+ ScopedJavaLocalRef<jobject> jobj = weak_java_feedback_reporter_.get(env);
+ if (jobj.is_null())
+ return;
+ base::android::ScopedJavaLocalRef<jstring> j_current_overlay_url_str =
+ Java_FeedbackReporter_getCurrentOverlayUrl(env, jobj.obj());
+ std::string current_overlay_url_str =
+ ConvertJavaStringToUTF8(j_current_overlay_url_str);
+ GURL current_overlay_url(current_overlay_url_str);
+ GURL navigation_url = details.entry->GetURL();
+ if (!current_overlay_url.is_valid() || navigation_url != current_overlay_url)
+ Java_FeedbackReporter_dismissOverlay(env, jobj.obj());
+}
+
+jlong Init(JNIEnv* env, jobject obj) {
+ FeedbackReporterAndroid* reporter = new FeedbackReporterAndroid(env, obj);
+ return reinterpret_cast<intptr_t>(reporter);
+}
+
+// static
+bool RegisterFeedbackReporter(JNIEnv* env) { return RegisterNativesImpl(env); }
+
+} // namespace android
+
+} // namespace dom_distiller
« no previous file with comments | « chrome/browser/android/dom_distiller/feedback_reporter_android.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698