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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java

Issue 1288903002: Refactor ShortcutHelper and merge in BookmarkUtils (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test file name Created 5 years, 4 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/webapps/AddToHomescreenDialogHelper.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..d31737a9f659a011af5a91725ffcb438d7294f87
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java
@@ -0,0 +1,104 @@
+// 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.webapps;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.annotations.CalledByNative;
+import org.chromium.chrome.browser.ShortcutHelper;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.content_public.browser.WebContents;
+
+/**
+ * This is a helper class to create shortcuts on the Android home screen.
+ */
+public class AddToHomescreenDialogHelper {
+
+ /** Observes the data fetching pipeline. */
+ public interface Observer {
+ /** Called when the title of the page is available. */
+ void onUserTitleAvailable(String title);
+
+ /** Called when the icon to use in the launcher is available. */
+ void onIconAvailable(Bitmap icon);
+ }
+
+ private final Context mAppContext;
+ private final Tab mTab;
+
+ private Observer mObserver;
+ private boolean mIsInitialized;
+ private long mNativeAddToHomescreenDialogHelper;
+
+ public AddToHomescreenDialogHelper(Context appContext, Tab tab) {
+ mAppContext = appContext;
+ mTab = tab;
+ }
+
+ /**
+ * Gets all the information required to initialize the UI. The observer will be notified as
+ * information required for the shortcut become available.
+ * @param observer Observer to notify.
+ */
+ public void initialize(Observer observer) {
+ mObserver = observer;
+ mNativeAddToHomescreenDialogHelper = nativeInitialize(mTab.getWebContents());
+ }
+
+ /**
+ * Returns whether the object is initialized.
+ */
+ public boolean isInitialized() {
+ return mIsInitialized;
+ }
+
+ /**
+ * Puts the object in a state where it is safe to be destroyed.
+ */
+ public void destroy() {
+ nativeDestroy(mNativeAddToHomescreenDialogHelper);
+
+ // Make sure the callback isn't run if the tear down happens before
+ // onInitialized() is called.
+ mObserver = null;
+ mNativeAddToHomescreenDialogHelper = 0;
+ }
+
+ @CalledByNative
+ private void onUserTitleAvailable(String title) {
+ mObserver.onUserTitleAvailable(title);
+ }
+
+ @CalledByNative
+ private void onIconAvailable(Bitmap icon) {
+ mObserver.onIconAvailable(icon);
+ mIsInitialized = true;
+ }
+
+ /**
+ * Adds a shortcut for the current Tab.
+ * @param userRequestedTitle Updated title for the shortcut.
+ */
+ public void addShortcut(String userRequestedTitle) {
+ nativeAddShortcut(mNativeAddToHomescreenDialogHelper, userRequestedTitle);
+ }
+
+ /**
+ * Creates an icon that is acceptable to show on the launcher.
+ */
+ @CalledByNative
+ private static Bitmap finalizeLauncherIcon(
+ String url, Bitmap icon, int red, int green, int blue) {
+ return ShortcutHelper.createLauncherIcon(
+ ApplicationStatus.getApplicationContext(), icon, url, red, green, blue);
+ }
+
+ private native long nativeInitialize(WebContents webContents);
+ private native void nativeAddShortcut(long nativeAddToHomescreenDialogHelper,
+ String userRequestedTitle);
+ private native void nativeDestroy(long nativeAddToHomescreenDialogHelper);
+}

Powered by Google App Engine
This is Rietveld 408576698