OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser; | 5 package org.chromium.chrome.browser; |
6 | 6 |
7 import android.app.ActivityManager; | 7 import android.app.ActivityManager; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.content.Intent; | 9 import android.content.Intent; |
10 import android.graphics.Bitmap; | 10 import android.graphics.Bitmap; |
(...skipping 20 matching lines...) Expand all Loading... |
31 | 31 |
32 /** | 32 /** |
33 * Sets the class name used when launching the shortcuts. | 33 * Sets the class name used when launching the shortcuts. |
34 * @param fullScreenAction Class name of the fullscreen Activity. | 34 * @param fullScreenAction Class name of the fullscreen Activity. |
35 */ | 35 */ |
36 public static void setFullScreenAction(String fullScreenAction) { | 36 public static void setFullScreenAction(String fullScreenAction) { |
37 sFullScreenAction = fullScreenAction; | 37 sFullScreenAction = fullScreenAction; |
38 } | 38 } |
39 | 39 |
40 /** | 40 /** |
| 41 * Callback to be passed to the initialized() method. |
| 42 */ |
| 43 public interface OnInitialized { |
| 44 public void onInitialized(String title); |
| 45 } |
| 46 |
| 47 private final Context mAppContext; |
| 48 private final Tab mTab; |
| 49 |
| 50 private OnInitialized mCallback; |
| 51 private boolean mIsInitialized; |
| 52 private long mNativeShortcutHelper; |
| 53 |
| 54 public ShortcutHelper(Context appContext, Tab tab) { |
| 55 mAppContext = appContext; |
| 56 mTab = tab; |
| 57 } |
| 58 |
| 59 /** |
| 60 * Gets all the information required to initialize the UI, the passed |
| 61 * callback will be run when those information will be available. |
| 62 * @param callback Callback to be run when initialized. |
| 63 */ |
| 64 public void initialize(OnInitialized callback) { |
| 65 mCallback = callback; |
| 66 mNativeShortcutHelper = nativeInitialize(mTab.getNativePtr()); |
| 67 } |
| 68 |
| 69 /** |
| 70 * Returns whether the object is initialized. |
| 71 */ |
| 72 public boolean isInitialized() { |
| 73 return mIsInitialized; |
| 74 } |
| 75 |
| 76 /** |
| 77 * Puts the object in a state where it is safe to be destroyed. |
| 78 */ |
| 79 public void tearDown() { |
| 80 nativeTearDown(mNativeShortcutHelper); |
| 81 |
| 82 // Make sure the callback isn't run if the tear down happens before |
| 83 // onInitialized() is called. |
| 84 mCallback = null; |
| 85 mNativeShortcutHelper = 0; |
| 86 } |
| 87 |
| 88 @CalledByNative |
| 89 private void onInitialized(String title) { |
| 90 mIsInitialized = true; |
| 91 |
| 92 if (mCallback != null) { |
| 93 mCallback.onInitialized(title); |
| 94 } |
| 95 } |
| 96 |
| 97 /** |
41 * Adds a shortcut for the current Tab. | 98 * Adds a shortcut for the current Tab. |
42 * @param appContext The application context. | |
43 * @param tab Tab to create a shortcut for. | |
44 * @param userRequestedTitle Updated title for the shortcut. | 99 * @param userRequestedTitle Updated title for the shortcut. |
45 */ | 100 */ |
46 public static void addShortcut(Context appContext, Tab tab, String userReque
stedTitle) { | 101 public void addShortcut(String userRequestedTitle) { |
47 if (TextUtils.isEmpty(sFullScreenAction)) { | 102 if (TextUtils.isEmpty(sFullScreenAction)) { |
48 Log.e("ShortcutHelper", "ShortcutHelper is uninitialized. Aborting.
"); | 103 Log.e("ShortcutHelper", "ShortcutHelper is uninitialized. Aborting.
"); |
49 return; | 104 return; |
50 } | 105 } |
51 ActivityManager am = (ActivityManager) appContext.getSystemService( | 106 ActivityManager am = (ActivityManager) mAppContext.getSystemService( |
52 Context.ACTIVITY_SERVICE); | 107 Context.ACTIVITY_SERVICE); |
53 nativeAddShortcut(tab.getNativePtr(), userRequestedTitle, am.getLauncher
LargeIconSize()); | 108 nativeAddShortcut(mNativeShortcutHelper, userRequestedTitle, am.getLaunc
herLargeIconSize()); |
| 109 |
| 110 // The C++ instance is no longer owned by the Java object. |
| 111 mCallback = null; |
| 112 mNativeShortcutHelper = 0; |
54 } | 113 } |
55 | 114 |
56 /** | 115 /** |
57 * Called when we have to fire an Intent to add a shortcut to the homescreen
. | 116 * Called when we have to fire an Intent to add a shortcut to the homescreen
. |
58 * If the webpage indicated that it was capable of functioning as a webapp,
it is added as a | 117 * If the webpage indicated that it was capable of functioning as a webapp,
it is added as a |
59 * shortcut to a webapp Activity rather than as a general bookmark. User is
sent to the | 118 * shortcut to a webapp Activity rather than as a general bookmark. User is
sent to the |
60 * homescreen as soon as the shortcut is created. | 119 * homescreen as soon as the shortcut is created. |
61 */ | 120 */ |
62 @SuppressWarnings("unused") | 121 @SuppressWarnings("unused") |
63 @CalledByNative | 122 @CalledByNative |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 context.sendBroadcast(BookmarkUtils.createAddToHomeIntent(context, short
cutIntent, title, | 158 context.sendBroadcast(BookmarkUtils.createAddToHomeIntent(context, short
cutIntent, title, |
100 favicon, red, green, blue)); | 159 favicon, red, green, blue)); |
101 | 160 |
102 // User is sent to the homescreen as soon as the shortcut is created. | 161 // User is sent to the homescreen as soon as the shortcut is created. |
103 Intent homeIntent = new Intent(Intent.ACTION_MAIN); | 162 Intent homeIntent = new Intent(Intent.ACTION_MAIN); |
104 homeIntent.addCategory(Intent.CATEGORY_HOME); | 163 homeIntent.addCategory(Intent.CATEGORY_HOME); |
105 homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 164 homeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
106 context.startActivity(homeIntent); | 165 context.startActivity(homeIntent); |
107 } | 166 } |
108 | 167 |
109 private static native void nativeAddShortcut(long tabAndroidPtr, String user
RequestedTitle, | 168 private native long nativeInitialize(long tabAndroidPtr); |
| 169 private native void nativeAddShortcut(long nativeShortcutHelper, String user
RequestedTitle, |
110 int launcherLargeIconSize); | 170 int launcherLargeIconSize); |
| 171 private native void nativeTearDown(long nativeShortcutHelper); |
111 } | 172 } |
OLD | NEW |