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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerUIUtils.java

Issue 1386043002: Open distiller UI setting through JavaScript (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comment nits Created 5 years, 2 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/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerUIUtils.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerUIUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerUIUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..c48bf363e2edaa0f987b380a096d71ede2cb5af2
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/DomDistillerUIUtils.java
@@ -0,0 +1,98 @@
+// Copyright 2015 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.
+
+package org.chromium.chrome.browser.dom_distiller;
+
+import android.app.Activity;
+import android.support.v7.app.AlertDialog;
+
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.base.annotations.JNINamespace;
+import org.chromium.base.metrics.RecordUserAction;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeApplication;
+import org.chromium.chrome.browser.feedback.FeedbackCollector;
+import org.chromium.chrome.browser.feedback.FeedbackReporter;
+import org.chromium.chrome.browser.profiles.Profile;
+import org.chromium.content.browser.ContentViewCore;
+import org.chromium.content_public.browser.WebContents;
+import org.chromium.ui.base.WindowAndroid;
+
+/**
+ * Java implementation of dom_distiller::android::DistillerUIHandleAndroid.
+ */
+@JNINamespace("dom_distiller::android")
+public final class DomDistillerUIUtils {
+ private static final String DISTILLATION_QUALITY_KEY = "Distillation quality";
+ private static final String DISTILLATION_QUALITY_GOOD = "good";
+ private static final String DISTILLATION_QUALITY_BAD = "bad";
+
+ private static FeedbackReporter sFeedbackReporter;
+
+ /**
+ * A static method for native code to open the external feedback form UI.
+ * @param webContents The WebContents containing the distilled content.
+ * @param url The URL to report feedback for.
+ * @param good True if the feedback is good and false if not.
+ */
+ @CalledByNative
+ public static void reportFeedbackWithWebContents(
+ WebContents webContents, String url, final boolean good) {
+ ThreadUtils.assertOnUiThread();
+ // TODO(mdjones): It would be better to get the WebContents from the manager so that the
+ // native code does not need to depend on RenderFrame.
+ Activity activity = getActivityFromWebContents(webContents);
+ if (activity == null) return;
+
+ if (sFeedbackReporter == null) {
+ ChromeApplication application = (ChromeApplication) activity.getApplication();
+ sFeedbackReporter = application.createFeedbackReporter();
+ }
+ FeedbackCollector.create(activity, Profile.getLastUsedProfile(), url,
+ new FeedbackCollector.FeedbackResult() {
+ @Override
+ public void onResult(FeedbackCollector collector) {
+ String quality =
+ good ? DISTILLATION_QUALITY_GOOD : DISTILLATION_QUALITY_BAD;
+ collector.add(DISTILLATION_QUALITY_KEY, quality);
+ sFeedbackReporter.reportFeedback(collector);
+ }
+ });
+ }
+
+ /**
+ * A static method for native code to call to open the distiller UI settings.
+ * @param webContents The WebContents containing the distilled content.
+ */
+ @CalledByNative
+ public static void openSettings(WebContents webContents) {
+ Activity activity = getActivityFromWebContents(webContents);
+ if (webContents != null && activity != null) {
+ RecordUserAction.record("DomDistiller_DistilledPagePrefsOpened");
+ AlertDialog.Builder builder =
+ new AlertDialog.Builder(activity, R.style.AlertDialogTheme);
+ builder.setView(DistilledPagePrefsView.create(activity));
+ builder.show();
+ }
+ }
+
+ /**
+ * @param webContents The WebContents to get the Activity from.
+ * @return The Activity associated with the WebContents.
+ */
+ private static Activity getActivityFromWebContents(WebContents webContents) {
+ if (webContents == null) return null;
+
+ ContentViewCore contentView = ContentViewCore.fromWebContents(webContents);
+ if (contentView == null) return null;
+
+ WindowAndroid window = contentView.getWindowAndroid();
+ if (window == null) return null;
+
+ return window.getActivity().get();
+ }
+
+ private DomDistillerUIUtils() {}
+}

Powered by Google App Engine
This is Rietveld 408576698