author | Broderick Stadden <bstadden@gmail.com> |
Wed, 27 Jul 2016 13:57:22 -1000 | |
changeset 393541 | 47e6ad80d929bbd1249664928f7a9507092841ad |
parent 393122 | d9290a592a0d6ab421c9a109d42bcb140ceb8db9 |
child 526601 | 3c2da01326a477963ee6cd0df848ee3b4f6f71ca |
push id | 24333 |
push user | bmo:bstadden@gmail.com |
push date | Thu, 28 Jul 2016 00:17:15 +0000 |
reviewers | jonalmeida |
bugs | 1279301 |
milestone | 50.0a1 |
--- a/mobile/android/base/AndroidManifest.xml.in +++ b/mobile/android/base/AndroidManifest.xml.in @@ -236,17 +236,17 @@ android:exported="false"> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" android:path="org.mozilla.gecko" /> </intent-filter> </receiver> <receiver - android:name="org.mozilla.gecko.NotificationReceiver" + android:name="org.mozilla.gecko.notifications.NotificationReceiver" android:exported="false"> <!-- Notification API V2 --> <intent-filter> <action android:name="@ANDROID_PACKAGE_NAME@.helperBroadcastAction" /> <data android:scheme="moz-notification" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> @@ -352,17 +352,17 @@ <service android:exported="false" android:name="org.mozilla.gecko.updater.UpdateService" android:process="@MANGLED_ANDROID_PACKAGE_NAME@.UpdateService"> </service> <service android:exported="false" - android:name="org.mozilla.gecko.NotificationService"> + android:name="org.mozilla.gecko.notifications.NotificationService"> </service> <service android:exported="false" android:name="org.mozilla.gecko.dlc.DownloadContentService"> </service> <service
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -52,16 +52,18 @@ import org.mozilla.gecko.home.HomePager. import org.mozilla.gecko.home.HomePanelsManager; import org.mozilla.gecko.home.HomeScreen; import org.mozilla.gecko.home.SearchEngine; import org.mozilla.gecko.javaaddons.JavaAddonManager; import org.mozilla.gecko.media.AudioFocusAgent; import org.mozilla.gecko.menu.GeckoMenu; import org.mozilla.gecko.menu.GeckoMenuItem; import org.mozilla.gecko.mozglue.SafeIntent; +import org.mozilla.gecko.notifications.NotificationClient; +import org.mozilla.gecko.notifications.ServiceNotificationClient; import org.mozilla.gecko.overlays.ui.ShareDialog; import org.mozilla.gecko.permissions.Permissions; import org.mozilla.gecko.preferences.ClearOnShutdownPref; import org.mozilla.gecko.preferences.GeckoPreferences; import org.mozilla.gecko.promotion.AddToHomeScreenPromotion; import org.mozilla.gecko.delegates.BookmarkStateChangeDelegate; import org.mozilla.gecko.promotion.ReaderViewBookmarkPromotion; import org.mozilla.gecko.prompts.Prompt;
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java @@ -18,16 +18,19 @@ import org.mozilla.gecko.gfx.LayerView; import org.mozilla.gecko.gfx.PluginLayer; import org.mozilla.gecko.health.HealthRecorder; import org.mozilla.gecko.health.SessionInformation; import org.mozilla.gecko.health.StubbedHealthRecorder; import org.mozilla.gecko.home.HomeConfig.PanelType; import org.mozilla.gecko.menu.GeckoMenu; import org.mozilla.gecko.menu.GeckoMenuInflater; import org.mozilla.gecko.menu.MenuPanel; +import org.mozilla.gecko.notifications.AppNotificationClient; +import org.mozilla.gecko.notifications.NotificationClient; +import org.mozilla.gecko.notifications.NotificationHelper; import org.mozilla.gecko.util.IntentUtils; import org.mozilla.gecko.mozglue.SafeIntent; import org.mozilla.gecko.mozglue.GeckoLoader; import org.mozilla.gecko.permissions.Permissions; import org.mozilla.gecko.preferences.ClearOnShutdownPref; import org.mozilla.gecko.preferences.GeckoPreferences; import org.mozilla.gecko.prompts.PromptService; import org.mozilla.gecko.restrictions.Restrictions;
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoAppShell.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoAppShell.java @@ -28,16 +28,17 @@ import java.util.concurrent.ConcurrentHa import android.annotation.SuppressLint; import org.mozilla.gecko.annotation.JNITarget; import org.mozilla.gecko.annotation.RobocopTarget; import org.mozilla.gecko.annotation.WrapForJNI; import org.mozilla.gecko.AppConstants.Versions; import org.mozilla.gecko.gfx.BitmapUtils; import org.mozilla.gecko.gfx.LayerView; import org.mozilla.gecko.gfx.PanZoomController; +import org.mozilla.gecko.notifications.NotificationClient; import org.mozilla.gecko.permissions.Permissions; import org.mozilla.gecko.util.EventCallback; import org.mozilla.gecko.util.GeckoRequest; import org.mozilla.gecko.util.HardwareCodecCapabilityUtils; import org.mozilla.gecko.util.HardwareUtils; import org.mozilla.gecko.util.NativeEventListener; import org.mozilla.gecko.util.NativeJSContainer; import org.mozilla.gecko.util.NativeJSObject; @@ -180,16 +181,20 @@ public class GeckoAppShell private static final Map<String, String> ALERT_COOKIES = new ConcurrentHashMap<String, String>(); private static volatile boolean locationHighAccuracyEnabled; // Accessed by NotificationHelper. This should be encapsulated. /* package */ static NotificationClient notificationClient; + public static NotificationClient getNotificationClient() { + return notificationClient; + } + // See also HardwareUtils.LOW_MEMORY_THRESHOLD_MB. private static final int HIGH_MEMORY_DEVICE_THRESHOLD_MB = 768; static private int sDensityDpi; static private int sScreenDepth; /* Is the value in sVibrationEndTime valid? */ private static boolean sVibrationMaybePlaying;
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java @@ -16,16 +16,17 @@ import com.squareup.leakcanary.RefWatche import org.mozilla.gecko.db.BrowserContract; import org.mozilla.gecko.db.BrowserDB; import org.mozilla.gecko.db.LocalBrowserDB; import org.mozilla.gecko.dlc.DownloadContentService; import org.mozilla.gecko.home.HomePanelsManager; import org.mozilla.gecko.lwt.LightweightTheme; import org.mozilla.gecko.mdns.MulticastDNSManager; +import org.mozilla.gecko.notifications.NotificationHelper; import org.mozilla.gecko.util.Clipboard; import org.mozilla.gecko.util.HardwareUtils; import org.mozilla.gecko.util.ThreadUtils; import java.io.File; import java.lang.reflect.Method; public class GeckoApplication extends Application
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoService.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoService.java @@ -10,16 +10,17 @@ import android.app.Service; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.util.Log; import java.io.File; +import org.mozilla.gecko.notifications.ServiceNotificationClient; import org.mozilla.gecko.util.NativeEventListener; import org.mozilla.gecko.util.NativeJSObject; import org.mozilla.gecko.util.EventCallback; public class GeckoService extends Service { private static final String LOGTAG = "GeckoService"; private static final boolean DEBUG = false;
rename from mobile/android/base/java/org/mozilla/gecko/AppNotificationClient.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/AppNotificationClient.java --- a/mobile/android/base/java/org/mozilla/gecko/AppNotificationClient.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/AppNotificationClient.java @@ -1,14 +1,14 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; import android.content.Context; /** * Client for posting notifications in the application. */ public class AppNotificationClient extends NotificationClient { private final Context mContext;
rename from mobile/android/base/java/org/mozilla/gecko/NotificationClient.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/NotificationClient.java --- a/mobile/android/base/java/org/mozilla/gecko/NotificationClient.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/NotificationClient.java @@ -1,14 +1,14 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; import android.app.Notification; import android.app.PendingIntent; import android.text.TextUtils; import android.util.Log; import java.util.LinkedList; import java.util.concurrent.ConcurrentHashMap;
rename from mobile/android/base/java/org/mozilla/gecko/NotificationHandler.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/NotificationHandler.java --- a/mobile/android/base/java/org/mozilla/gecko/NotificationHandler.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/NotificationHandler.java @@ -1,22 +1,24 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; import android.graphics.Bitmap; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationManagerCompat; + +import org.mozilla.gecko.R; import org.mozilla.gecko.gfx.BitmapUtils; import java.util.concurrent.ConcurrentHashMap; public class NotificationHandler { private static String LOGTAG = "GeckoNotifHandler"; private final ConcurrentHashMap<Integer, Notification> mNotifications = new ConcurrentHashMap<Integer, Notification>();
rename from mobile/android/base/java/org/mozilla/gecko/NotificationHelper.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/NotificationHelper.java --- a/mobile/android/base/java/org/mozilla/gecko/NotificationHelper.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/NotificationHelper.java @@ -1,21 +1,25 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; import java.util.HashMap; import java.util.Iterator; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.mozilla.gecko.AppConstants; +import org.mozilla.gecko.EventDispatcher; +import org.mozilla.gecko.GeckoAppShell; +import org.mozilla.gecko.R; import org.mozilla.gecko.gfx.BitmapUtils; import org.mozilla.gecko.mozglue.SafeIntent; import org.mozilla.gecko.util.GeckoEventListener; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -294,17 +298,17 @@ public final class NotificationHelper im } } PendingIntent pi = buildNotificationPendingIntent(message, CLICK_EVENT); builder.setContentIntent(pi); PendingIntent deletePendingIntent = buildNotificationPendingIntent(message, CLEARED_EVENT); builder.setDeleteIntent(deletePendingIntent); - GeckoAppShell.notificationClient.add(id.hashCode(), builder.build()); + GeckoAppShell.getNotificationClient().add(id.hashCode(), builder.build()); boolean persistent = message.optBoolean(PERSISTENT_ATTR); // We add only not persistent notifications to the list since we want to purge only // them when geckoapp is destroyed. if (!persistent && !mClearableNotifications.containsKey(id)) { mClearableNotifications.put(id, message.toString()); } } @@ -335,17 +339,17 @@ public final class NotificationHelper im Log.i(LOGTAG, "Send " + args.toString()); GeckoAppShell.notifyObservers("Notification:Event", args.toString()); } catch (JSONException ex) { Log.e(LOGTAG, "sendNotificationWasClosed: error building JSON notification arguments.", ex); } } private void closeNotification(String id, String handlerKey, String cookie) { - GeckoAppShell.notificationClient.remove(id.hashCode()); + GeckoAppShell.getNotificationClient().remove(id.hashCode()); sendNotificationWasClosed(id, handlerKey, cookie); } public void hideNotification(String id, String handlerKey, String cookie) { mClearableNotifications.remove(id); closeNotification(id, handlerKey, cookie); }
rename from mobile/android/base/java/org/mozilla/gecko/NotificationReceiver.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/NotificationReceiver.java --- a/mobile/android/base/java/org/mozilla/gecko/NotificationReceiver.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/NotificationReceiver.java @@ -1,15 +1,16 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; +import org.mozilla.gecko.GeckoThread; import org.mozilla.gecko.mozglue.SafeIntent; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.util.Log;
rename from mobile/android/base/java/org/mozilla/gecko/NotificationService.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/NotificationService.java --- a/mobile/android/base/java/org/mozilla/gecko/NotificationService.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/NotificationService.java @@ -1,14 +1,14 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; import android.app.Notification; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; public class NotificationService extends Service {
rename from mobile/android/base/java/org/mozilla/gecko/ServiceNotificationClient.java rename to mobile/android/base/java/org/mozilla/gecko/notifications/ServiceNotificationClient.java --- a/mobile/android/base/java/org/mozilla/gecko/ServiceNotificationClient.java +++ b/mobile/android/base/java/org/mozilla/gecko/notifications/ServiceNotificationClient.java @@ -1,14 +1,14 @@ /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -package org.mozilla.gecko; +package org.mozilla.gecko.notifications; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.util.Log;
--- a/mobile/android/base/moz.build +++ b/mobile/android/base/moz.build @@ -208,17 +208,16 @@ gbjar.sources += ['java/org/mozilla/geck 'AlarmReceiver.java', 'AndroidGamepadManager.java', 'animation/AnimationUtils.java', 'animation/HeightChangeAnimation.java', 'animation/PropertyAnimator.java', 'animation/Rotate3DAnimation.java', 'animation/ViewHelper.java', 'ANRReporter.java', - 'AppNotificationClient.java', 'BaseGeckoInterface.java', 'BootReceiver.java', 'BrowserApp.java', 'BrowserLocaleManager.java', 'cleanup/FileCleanupController.java', 'cleanup/FileCleanupService.java', 'ContactService.java', 'ContextGetter.java', @@ -478,22 +477,24 @@ gbjar.sources += ['java/org/mozilla/geck 'menu/GeckoMenuItem.java', 'menu/GeckoSubMenu.java', 'menu/MenuItemActionBar.java', 'menu/MenuItemDefault.java', 'menu/MenuItemSwitcherLayout.java', 'menu/MenuPanel.java', 'menu/MenuPopup.java', 'MotionEventInterceptor.java', - 'NotificationClient.java', - 'NotificationHandler.java', - 'NotificationHelper.java', - 'NotificationReceiver.java', + 'notifications/AppNotificationClient.java', + 'notifications/NotificationClient.java', + 'notifications/NotificationHandler.java', + 'notifications/NotificationHelper.java', + 'notifications/NotificationReceiver.java', + 'notifications/NotificationService.java', + 'notifications/ServiceNotificationClient.java', 'notifications/WhatsNewReceiver.java', - 'NotificationService.java', 'NSSBridge.java', 'overlays/OverlayConstants.java', 'overlays/service/OverlayActionService.java', 'overlays/service/ShareData.java', 'overlays/service/sharemethods/AddBookmark.java', 'overlays/service/sharemethods/SendTab.java', 'overlays/service/sharemethods/ShareMethod.java', 'overlays/ui/OverlayDialogButton.java', @@ -557,17 +558,16 @@ gbjar.sources += ['java/org/mozilla/geck 'restrictions/RestrictedProfileConfiguration.java', 'restrictions/RestrictionCache.java', 'restrictions/RestrictionConfiguration.java', 'restrictions/RestrictionProvider.java', 'restrictions/Restrictions.java', 'ScreenshotObserver.java', 'search/SearchEngine.java', 'search/SearchEngineManager.java', - 'ServiceNotificationClient.java', 'SessionParser.java', 'SharedPreferencesHelper.java', 'SiteIdentity.java', 'SmsManager.java', 'SnackbarBuilder.java', 'sqlite/ByteBufferInputStream.java', 'sqlite/MatrixBlobCursor.java', 'sqlite/SQLiteBridge.java',