Bug 1081388: Add missing @Override annotations. r=rnewman
authorChris Kitching <chriskitching@linux.com>
Fri, 10 Oct 2014 23:58:19 +0100
changeset 233208 1278a4bf957cd5eae5c74e7eafff39ab128b7ac1
parent 233207 41085ca48e5ad955fd7b45b808fa879603ba2f22
child 233209 25b2da75efc60899bbc6970f404882adc03d1746
push id4187
push userbhearsum@mozilla.com
push dateFri, 28 Nov 2014 15:29:12 +0000
treeherdermozilla-beta@f23cc6a30c11 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersrnewman
bugs1081388
milestone35.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1081388: Add missing @Override annotations. r=rnewman * * * Bug 1081388: Add missing @Override annotations. r=rnewman * * * Bug 1081388: Add missing @Override annotations. r=rnewman
mobile/android/base/ActionModeCompatView.java
mobile/android/base/AndroidGamepadManager.java
mobile/android/base/BaseGeckoInterface.java
mobile/android/base/BrowserApp.java
mobile/android/base/BrowserLocaleManager.java
mobile/android/base/ChromeCast.java
mobile/android/base/ContactService.java
mobile/android/base/EventDispatcher.java
mobile/android/base/FilePicker.java
mobile/android/base/GeckoAccessibility.java
mobile/android/base/GeckoApp.java
mobile/android/base/GeckoJavaSampler.java
mobile/android/base/GeckoView.java
mobile/android/base/GeckoViewChrome.java
mobile/android/base/GeckoViewContent.java
mobile/android/base/RemoteClientsDialogFragment.java
mobile/android/base/TextSelection.java
mobile/android/base/db/TabsProvider.java
mobile/android/base/db/TopSitesCursorWrapper.java
mobile/android/base/gfx/BitmapUtils.java
mobile/android/base/gfx/NativePanZoomController.java
mobile/android/base/gfx/OverscrollEdgeEffect.java
mobile/android/base/health/BrowserHealthRecorder.java
mobile/android/base/health/StubbedHealthRecorder.java
mobile/android/base/home/BookmarksListAdapter.java
mobile/android/base/home/PanelLayout.java
mobile/android/base/home/RecentTabsPanel.java
mobile/android/base/home/RemoteTabsExpandableListFragment.java
mobile/android/base/overlays/service/sharemethods/AddBookmark.java
mobile/android/base/overlays/ui/SendTabList.java
mobile/android/base/preferences/GeckoPreferences.java
mobile/android/base/prompts/IconGridInput.java
mobile/android/base/prompts/PromptInput.java
mobile/android/base/prompts/PromptService.java
mobile/android/base/tests/testClearPrivateData.java
mobile/android/base/tests/testFindInPage.java
mobile/android/base/tests/testImportFromAndroid.java
mobile/android/base/tests/testInputUrlBar.java
mobile/android/base/tests/testMasterPassword.java
mobile/android/base/toolbar/BrowserToolbar.java
mobile/android/base/util/WebActivityMapper.java
mobile/android/base/widget/ActivityChooserModel.java
mobile/android/base/widget/BasicColorPicker.java
mobile/android/base/widget/ButtonToast.java
mobile/android/base/widget/TwoWayView.java
mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/StumblerService.java
mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/GPSScanner.java
mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/WifiScanner.java
mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/cellscanner/CellInfo.java
--- a/mobile/android/base/ActionModeCompatView.java
+++ b/mobile/android/base/ActionModeCompatView.java
@@ -57,16 +57,17 @@ class ActionModeCompatView extends Linea
         mTitleView = (Button) findViewById(R.id.actionmode_title);
         mMenuButton = (ImageButton) findViewById(R.id.actionbar_menu);
         mActionButtonBar = (ViewGroup) findViewById(R.id.actionbar_buttons);
 
         mPopupMenu = new GeckoPopupMenu(getContext(), mMenuButton);
         ((GeckoMenu) mPopupMenu.getMenu()).setActionItemBarPresenter(this);
 
         mMenuButton.setOnClickListener(new View.OnClickListener() {
+            @Override
             public void onClick(View v) {
                 openMenu();
             }
         });
     }
 
     public void initForMode(final ActionModeCompat mode) {
         mTitleView.setOnClickListener(mode);
@@ -85,16 +86,17 @@ class ActionModeCompatView extends Linea
     public void setTitle(int resId) {
         mTitleView.setText(resId);
     }
 
     public Menu getMenu() {
         return mPopupMenu.getMenu();
     }
 
+    @Override
     public void invalidate() {
         // onFinishInflate may not have been called yet on some versions of Android
         if (mPopupMenu != null && mMenuButton != null) {
             mMenuButton.setVisibility(mPopupMenu.getMenu().hasVisibleItems() ? View.VISIBLE : View.GONE);
         }
         super.invalidate();
     }
 
--- a/mobile/android/base/AndroidGamepadManager.java
+++ b/mobile/android/base/AndroidGamepadManager.java
@@ -327,49 +327,53 @@ public class AndroidGamepadManager {
         sGamepads.remove(deviceId);
     }
 
     private static void addDeviceListener() {
         if (Versions.preJB) {
             // Poll known gamepads to see if they've disappeared.
             sPollTimer = new Timer();
             sPollTimer.scheduleAtFixedRate(new TimerTask() {
+                    @Override
                     public void run() {
                         for (Integer deviceId : sGamepads.keySet()) {
                             if (InputDevice.getDevice(deviceId) == null) {
                                 removeGamepad(deviceId);
                             }
                         }
                     }
                 }, POLL_TIMER_PERIOD, POLL_TIMER_PERIOD);
             return;
         }
         sListener = new InputManager.InputDeviceListener() {
+                @Override
                 public void onInputDeviceAdded(int deviceId) {
                     InputDevice device = InputDevice.getDevice(deviceId);
                     if (device == null) {
                         return;
                     }
                     if ((device.getSources() & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) {
                         addGamepad(device);
                     }
                 }
 
+                @Override
                 public void onInputDeviceRemoved(int deviceId) {
                     if (sPendingGamepads.containsKey(deviceId)) {
                         // Got removed before Gecko's ack reached us.
                         // gamepadAdded will deal with it.
                         sPendingGamepads.remove(deviceId);
                         return;
                     }
                     if (sGamepads.containsKey(deviceId)) {
                         removeGamepad(deviceId);
                     }
                 }
 
+                @Override
                 public void onInputDeviceChanged(int deviceId) {
                 }
             };
         ((InputManager)GeckoAppShell.getContext().getSystemService(Context.INPUT_SERVICE)).registerInputDeviceListener(sListener, ThreadUtils.getUiHandler());
     }
 
     private static void removeDeviceListener() {
         if (Versions.preJB) {
--- a/mobile/android/base/BaseGeckoInterface.java
+++ b/mobile/android/base/BaseGeckoInterface.java
@@ -30,103 +30,125 @@ public class BaseGeckoInterface implemen
 
     private final Context mContext;
     private GeckoProfile mProfile;
 
     public BaseGeckoInterface(Context context) {
         mContext = context;
     }
 
+    @Override
     public GeckoProfile getProfile() {
         // Fall back to default profile if we didn't load a specific one
         if (mProfile == null) {
             mProfile = GeckoProfile.get(mContext);
         }
         return mProfile;
     }
 
     // Bug 908770: Implement this
+    @Override
     public PromptService getPromptService() {
         return null;
     }
 
+    @Override
     public Activity getActivity() {
         return (Activity)mContext;
     }
 
+    @Override
     public String getDefaultUAString() {
         return HardwareUtils.isTablet() ? AppConstants.USER_AGENT_FENNEC_TABLET :
                                           AppConstants.USER_AGENT_FENNEC_MOBILE;
     }
 
     // Bug 908772: Implement this
+    @Override
     public LocationListener getLocationListener() {
         return null;
     }
 
     // Bug 908773: Implement this
+    @Override
     public SensorEventListener getSensorEventListener() {
         return null;
     }
 
     // Bug 908775: Implement this
+    @Override
     public void doRestart() {}
 
+    @Override
     public void setFullScreen(final boolean fullscreen) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 ActivityUtils.setFullScreen(getActivity(), fullscreen);
             }
         });
     }
 
     // Bug 908779: Implement this
+    @Override
     public void addPluginView(final View view, final RectF rect, final boolean isFullScreen) {}
 
     // Bug 908781: Implement this
+    @Override
     public void removePluginView(final View view, final boolean isFullScreen) {}
 
     // Bug 908783: Implement this
+    @Override
     public void enableCameraView() {}
 
     // Bug 908785: Implement this
+    @Override
     public void disableCameraView() {}
 
     // Bug 908786: Implement this
+    @Override
     public void addAppStateListener(GeckoAppShell.AppStateListener listener) {}
 
     // Bug 908787: Implement this
+    @Override
     public void removeAppStateListener(GeckoAppShell.AppStateListener listener) {}
 
     // Bug 908788: Implement this
+    @Override
     public View getCameraView() {
         return null;
     }
 
     // Bug 908789: Implement this
+    @Override
     public void notifyWakeLockChanged(String topic, String state) {}
 
     // Bug 908790: Implement this
+    @Override
     public FormAssistPopup getFormAssistPopup() {
         return null;
     }
 
+    @Override
     public boolean areTabsShown() {
         return false;
     }
 
     // Bug 908791: Implement this
+    @Override
     public AbsoluteLayout getPluginContainer() {
         return null;
     }
 
+    @Override
     public void notifyCheckUpdateResult(String result) {
         GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Update:CheckResult", result));
     }
 
+    @Override
     public boolean hasTabsSideBar() {
         return false;
     }
 
     // Bug 908792: Implement this
+    @Override
     public void invalidateOptionsMenu() {}
 }
--- a/mobile/android/base/BrowserApp.java
+++ b/mobile/android/base/BrowserApp.java
@@ -855,56 +855,62 @@ public class BrowserApp extends GeckoApp
                     mLayerView.showSurface();
                 }
             });
         }
     }
 
     private void setBrowserToolbarListeners() {
         mBrowserToolbar.setOnActivateListener(new BrowserToolbar.OnActivateListener() {
+            @Override
             public void onActivate() {
                 enterEditingMode();
             }
         });
 
         mBrowserToolbar.setOnCommitListener(new BrowserToolbar.OnCommitListener() {
+            @Override
             public void onCommit() {
                 commitEditingMode();
             }
         });
 
         mBrowserToolbar.setOnDismissListener(new BrowserToolbar.OnDismissListener() {
+            @Override
             public void onDismiss() {
                 mBrowserToolbar.cancelEdit();
             }
         });
 
         mBrowserToolbar.setOnFilterListener(new BrowserToolbar.OnFilterListener() {
+            @Override
             public void onFilter(String searchText, AutocompleteHandler handler) {
                 filterEditingMode(searchText, handler);
             }
         });
 
         mBrowserToolbar.setOnFocusChangeListener(new View.OnFocusChangeListener() {
             @Override
             public void onFocusChange(View v, boolean hasFocus) {
                 if (isHomePagerVisible()) {
                     mHomePager.onToolbarFocusChange(hasFocus);
                 }
             }
         });
 
         mBrowserToolbar.setOnStartEditingListener(new BrowserToolbar.OnStartEditingListener() {
+            @Override
             public void onStartEditing() {
                 // Temporarily disable doorhanger notifications.
                 mDoorHangerPopup.disable();
             }
         });
 
         mBrowserToolbar.setOnStopEditingListener(new BrowserToolbar.OnStopEditingListener() {
+            @Override
             public void onStopEditing() {
                 selectTargetTabForEditingMode();
 
                 // Since the underlying LayerView is set visible in hideHomePager, we would
                 // ordinarily want to call it first. However, hideBrowserSearch changes the
                 // visibility of the HomePager and hideHomePager will take no action if the
                 // HomePager is hidden, so we want to call hideBrowserSearch to restore the
                 // HomePager visibility first.
@@ -1248,30 +1254,32 @@ public class BrowserApp extends GeckoApp
 
         // If the page has shrunk so that the toolbar no longer scrolls, make
         // sure the toolbar is visible.
         if (aMetrics.getPageHeight() <= aMetrics.getHeight()) {
             if (mDynamicToolbarCanScroll) {
                 mDynamicToolbarCanScroll = false;
                 if (mBrowserChrome.getVisibility() != View.VISIBLE) {
                     ThreadUtils.postToUiThread(new Runnable() {
+                        @Override
                         public void run() {
                             mDynamicToolbar.setVisible(true, VisibilityTransition.ANIMATE);
                         }
                     });
                 }
             }
         } else {
             mDynamicToolbarCanScroll = true;
         }
 
         final View browserChrome = mBrowserChrome;
         final ToolbarProgressView progressView = mProgressView;
         final int marginTop = Math.round(aMetrics.marginTop);
         ThreadUtils.postToUiThread(new Runnable() {
+            @Override
             public void run() {
                 final float translationY = marginTop - browserChrome.getHeight();
                 ViewHelper.setTranslationY(browserChrome, translationY);
                 ViewHelper.setTranslationY(progressView, translationY);
 
                 if (mDoorHangerPopup.isShowing()) {
                     mDoorHangerPopup.updatePopup();
                 }
--- a/mobile/android/base/BrowserLocaleManager.java
+++ b/mobile/android/base/BrowserLocaleManager.java
@@ -70,16 +70,17 @@ public class BrowserLocaleManager implem
         localeManager = new BrowserLocaleManager();
         if (instance.compareAndSet(null, localeManager)) {
             return localeManager;
         } else {
             return instance.get();
         }
     }
 
+    @Override
     public boolean isEnabled() {
         return AppConstants.MOZ_LOCALE_SWITCHER;
     }
 
     /**
      * Sometimes we want just the language for a locale, not the entire
      * language tag. But Java's .getLanguage method is wrong.
      *
--- a/mobile/android/base/ChromeCast.java
+++ b/mobile/android/base/ChromeCast.java
@@ -147,16 +147,17 @@ class ChromeCast implements GeckoMediaPl
 
         this.context = context;
         this.route = route;
         this.canMirror = route.supportsControlCategory(CastMediaControlIntent.categoryForCast(MIRROR_RECIEVER_APP_ID));
     }
 
     // This dumps everything we can find about the device into JSON. This will hopefully make it
     // easier to filter out duplicate devices from different sources in js.
+    @Override
     public JSONObject toJSON() {
         final JSONObject obj = new JSONObject();
         try {
             final CastDevice device = CastDevice.getFromBundle(route.getExtras());
             if (device == null) {
                 return null;
             }
 
@@ -170,16 +171,17 @@ class ChromeCast implements GeckoMediaPl
             obj.put("manufacturer", "Google Inc.");
         } catch(JSONException ex) {
             debug("Error building route", ex);
         }
 
         return obj;
     }
 
+    @Override
     public void load(final String title, final String url, final String type, final EventCallback callback) {
         final CastDevice device = CastDevice.getFromBundle(route.getExtras());
         Cast.CastOptions.Builder apiOptionsBuilder = Cast.CastOptions.builder(device, new Cast.Listener() {
             @Override
             public void onApplicationStatusChanged() { }
 
             @Override
             public void onVolumeChanged() { }
@@ -213,21 +215,23 @@ class ChromeCast implements GeckoMediaPl
                 public void onConnectionSuspended(int cause) {
                     debug("suspended");
                 }
         }).build();
 
         apiClient.connect();
     }
 
+    @Override
     public void start(final EventCallback callback) {
         // Nothing to be done here
         callback.sendSuccess(null);
     }
 
+    @Override
     public void stop(final EventCallback callback) {
         // Nothing to be done here
         callback.sendSuccess(null);
     }
 
     public boolean verifySession(final EventCallback callback) {
         String msg = null;
         if (apiClient == null || !apiClient.isConnected()) {
@@ -244,16 +248,17 @@ class ChromeCast implements GeckoMediaPl
                 callback.sendError(msg);
             }
             return false;
         }
 
         return true;
     }
 
+    @Override
     public void play(final EventCallback callback) {
         if (!verifySession(callback)) {
             return;
         }
 
         try {
             remoteMediaPlayer.play(apiClient).setResultCallback(new ResultCallback<MediaChannelResult>() {
                 @Override
@@ -268,16 +273,17 @@ class ChromeCast implements GeckoMediaPl
                 }
             });
         } catch(IllegalStateException ex) {
             // The media player may throw if the session has been killed. For now, we're just catching this here.
             callback.sendError("Error playing");
         }
     }
 
+    @Override
     public void pause(final EventCallback callback) {
         if (!verifySession(callback)) {
             return;
         }
 
         try {
             remoteMediaPlayer.pause(apiClient).setResultCallback(new ResultCallback<MediaChannelResult>() {
                 @Override
@@ -292,16 +298,17 @@ class ChromeCast implements GeckoMediaPl
                 }
             });
         } catch(IllegalStateException ex) {
             // The media player may throw if the session has been killed. For now, we're just catching this here.
             callback.sendError("Error pausing");
         }
     }
 
+    @Override
     public void end(final EventCallback callback) {
         if (!verifySession(callback)) {
             return;
         }
 
         try {
             Cast.CastApi.stopApplication(apiClient).setResultCallback(new ResultCallback<Status>() {
                 @Override
@@ -371,16 +378,17 @@ class ChromeCast implements GeckoMediaPl
     private class MirrorCallback implements ResultCallback<ApplicationConnectionResult> {
 
         final EventCallback callback;
         MirrorCallback(final EventCallback callback) {
             this.callback = callback;
         }
 
 
+        @Override
         public void onResult(ApplicationConnectionResult result) {
             Status status = result.getStatus();
             if (status.isSuccess()) {
                 ApplicationMetadata applicationMetadata = result.getApplicationMetadata();
                 mSessionId = result.getSessionId();
                 String applicationStatus = result.getApplicationStatus();
                 boolean wasLaunched = result.getWasLaunched();
                 mApplicationStarted = true;
@@ -400,22 +408,24 @@ class ChromeCast implements GeckoMediaPl
 
                 GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Casting:Mirror", route.getId()));
             } else {
                 callback.sendError(status.toString());
             }
         }
     }
 
+    @Override
     public void message(String msg, final EventCallback callback) {
         if (mMirrorChannel != null) {
             mMirrorChannel.sendMessage(msg);
         }
     }
 
+    @Override
     public void mirror(final EventCallback callback) {
         final CastDevice device = CastDevice.getFromBundle(route.getExtras());
         Cast.CastOptions.Builder apiOptionsBuilder = Cast.CastOptions.builder(device, new Cast.Listener() {
                 @Override
                 public void onApplicationStatusChanged() { }
 
                 @Override
                 public void onVolumeChanged() { }
--- a/mobile/android/base/ContactService.java
+++ b/mobile/android/base/ContactService.java
@@ -1553,16 +1553,17 @@ public class ContactService implements G
                     mAccountName = accounts[position].name;
                     mAccountType = accounts[position].type;
                     dialog.dismiss();
                     gotDeviceAccount(handleMessage);
                 }
             });
 
         mActivity.runOnUiThread(new Runnable() {
+            @Override
             public void run() {
                 builder.show();
             }
         });
     }
 
     private void gotDeviceAccount(final Runnable handleMessage) {
         // Force the handleMessage runnable and getDefaultGroupId to run on the background thread
--- a/mobile/android/base/EventDispatcher.java
+++ b/mobile/android/base/EventDispatcher.java
@@ -250,20 +250,22 @@ public final class EventDispatcher {
         private final String type;
         private boolean sent;
 
         public GeckoEventCallback(final String guid, final String type) {
             this.guid = guid;
             this.type = type;
         }
 
+        @Override
         public void sendSuccess(final Object response) {
             sendResponse(STATUS_SUCCESS, response);
         }
 
+        @Override
         public void sendError(final Object response) {
             sendResponse(STATUS_ERROR, response);
         }
 
         private void sendResponse(final String status, final Object response) {
             if (sent) {
                 throw new IllegalStateException("Callback has already been executed for type=" +
                         type + ", guid=" + guid);
--- a/mobile/android/base/FilePicker.java
+++ b/mobile/android/base/FilePicker.java
@@ -56,16 +56,17 @@ public class FilePicker implements Gecko
             final String title = message.optString("title");
 
             if ("mimeType".equals(mode))
                 mimeType = message.optString("mimeType");
             else if ("extension".equals(mode))
                 mimeType = GeckoAppShell.getMimeTypeFromExtensions(message.optString("extensions"));
 
             showFilePickerAsync(title, mimeType, new ResultHandler() {
+                @Override
                 public void gotFile(String filename) {
                     try {
                         message.put("file", filename);
                     } catch (JSONException ex) {
                         Log.i(LOGTAG, "Can't add filename to message " + filename);
                     }
 
 
--- a/mobile/android/base/GeckoAccessibility.java
+++ b/mobile/android/base/GeckoAccessibility.java
@@ -258,16 +258,17 @@ public class GeckoAccessibility {
     }
 
     public static void setAccessibilityStateChangeListener(final Context context) {
         // The state change listener is only supported on API14+
         if (Versions.feature14Plus) {
             AccessibilityManager accessibilityManager =
                 (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
             accessibilityManager.addAccessibilityStateChangeListener(new AccessibilityManager.AccessibilityStateChangeListener() {
+                @Override
                 public void onAccessibilityStateChanged(boolean enabled) {
                     updateAccessibilitySettings(context);
                 }
             });
         }
     }
 
     public static void onLayerViewFocusChanged(LayerView layerview, boolean gainFocus) {
--- a/mobile/android/base/GeckoApp.java
+++ b/mobile/android/base/GeckoApp.java
@@ -193,16 +193,17 @@ public abstract class GeckoApp
     private String mPrivateBrowsingSession;
 
     private volatile HealthRecorder mHealthRecorder;
     private volatile Locale mLastLocale;
 
     private EventListener mWebappEventListener;
 
     abstract public int getLayout();
+    @Override
     abstract public boolean hasTabsSideBar();
     abstract protected String getDefaultProfileName() throws NoMozillaDirectoryException;
 
     private static final String RESTARTER_ACTION = "org.mozilla.gecko.restart";
     private static final String RESTARTER_CLASS = "org.mozilla.gecko.Restarter";
 
     @SuppressWarnings("serial")
     class SessionRestoreException extends Exception {
@@ -224,40 +225,47 @@ public abstract class GeckoApp
         return this;
     }
 
     @Override
     public SharedPreferences getSharedPreferences() {
         return GeckoSharedPrefs.forApp(this);
     }
 
+    @Override
     public Activity getActivity() {
         return this;
     }
 
+    @Override
     public LocationListener getLocationListener() {
         return this;
     }
 
+    @Override
     public SensorEventListener getSensorEventListener() {
         return this;
     }
 
+    @Override
     public View getCameraView() {
         return mCameraView;
     }
 
+    @Override
     public void addAppStateListener(GeckoAppShell.AppStateListener listener) {
         mAppStateListeners.add(listener);
     }
 
+    @Override
     public void removeAppStateListener(GeckoAppShell.AppStateListener listener) {
         mAppStateListeners.remove(listener);
     }
 
+    @Override
     public FormAssistPopup getFormAssistPopup() {
         return mFormAssistPopup;
     }
 
     @Override
     public void onTabChanged(Tab tab, Tabs.TabEvents msg, Object data) {
         // When a tab is closed, it is always unselected first.
         // When a tab is unselected, another tab is always selected first.
@@ -532,16 +540,17 @@ public abstract class GeckoApp
      * Close the tab UI indirectly (not as the result of a direct user
      * action).  This does not force the UI to close; for example in Firefox
      * tablet mode it will remain open unless the user explicitly closes it.
      *
      * @return True if the tab UI was hidden.
      */
     public boolean autoHideTabs() { return false; }
 
+    @Override
     public boolean areTabsShown() { return false; }
 
     @Override
     public void handleMessage(final String event, final NativeJSObject message,
                               final EventCallback callback) {
         if ("Accessibility:Ready".equals(event)) {
             GeckoAccessibility.updateAccessibilitySettings(this);
 
@@ -857,16 +866,17 @@ public abstract class GeckoApp
 
 
         FrameLayout decor = (FrameLayout)getWindow().getDecorView();
         decor.addView(mFullScreenPluginContainer, layoutParams);
 
         mFullScreenPluginView = view;
     }
 
+    @Override
     public void addPluginView(final View view, final RectF rect, final boolean isFullScreen) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 Tabs tabs = Tabs.getInstance();
                 Tab tab = tabs.getSelectedTab();
 
                 if (isFullScreen) {
@@ -914,16 +924,17 @@ public abstract class GeckoApp
         decor.removeView(mFullScreenPluginContainer);
 
         mFullScreenPluginView = null;
 
         GeckoScreenOrientation.getInstance().unlock();
         setFullScreen(false);
     }
 
+    @Override
     public void removePluginView(final View view, final boolean isFullScreen) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 Tabs tabs = Tabs.getInstance();
                 Tab tab = tabs.getSelectedTab();
 
                 if (isFullScreen) {
@@ -1066,16 +1077,17 @@ public abstract class GeckoApp
             if (layer instanceof PluginLayer) {
                 ((PluginLayer) layer).setVisible(true);
             }
         }
 
         requestRender();
     }
 
+    @Override
     public void setFullScreen(final boolean fullscreen) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 ActivityUtils.setFullScreen(GeckoApp.this, fullscreen);
             }
         });
     }
@@ -1653,16 +1665,17 @@ public abstract class GeckoApp
             restoreData.put("sessionString", sessionString);
             return restoreData.toString();
 
         } catch (JSONException e) {
             throw new SessionRestoreException(e);
         }
     }
 
+    @Override
     public synchronized GeckoProfile getProfile() {
         // fall back to default profile if we didn't load a specific one
         if (mProfile == null) {
             mProfile = GeckoProfile.get(this);
         }
         return mProfile;
     }
 
@@ -1717,16 +1730,17 @@ public abstract class GeckoApp
                                   .build());
 
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                                .detectAll()
                                .penaltyLog()
                                .build());
     }
 
+    @Override
     public void enableCameraView() {
         // Start listening for orientation events
         mCameraOrientationEventListener = new OrientationEventListener(this) {
             @Override
             public void onOrientationChanged(int orientation) {
                 if (mAppStateListeners != null) {
                     for (GeckoAppShell.AppStateListener listener: mAppStateListeners) {
                         listener.onOrientationChanged();
@@ -1743,27 +1757,29 @@ public abstract class GeckoApp
             }
             ViewGroup mCameraLayout = (ViewGroup) findViewById(R.id.camera_layout);
             // Some phones (eg. nexus S) need at least a 8x16 preview size
             mCameraLayout.addView(mCameraView,
                                   new AbsoluteLayout.LayoutParams(8, 16, 0, 0));
         }
     }
 
+    @Override
     public void disableCameraView() {
         if (mCameraOrientationEventListener != null) {
             mCameraOrientationEventListener.disable();
             mCameraOrientationEventListener = null;
         }
         if (mCameraView != null) {
           ViewGroup mCameraLayout = (ViewGroup) findViewById(R.id.camera_layout);
           mCameraLayout.removeView(mCameraView);
         }
     }
 
+    @Override
     public String getDefaultUAString() {
         return HardwareUtils.isTablet() ? AppConstants.USER_AGENT_FENNEC_TABLET :
                                           AppConstants.USER_AGENT_FENNEC_MOBILE;
     }
 
     private void processAlertCallback(Intent intent) {
         String alertName = "";
         String alertCookie = "";
@@ -2114,16 +2130,17 @@ public abstract class GeckoApp
         while (envIter.hasNext()) {
             Map.Entry<String,String> entry = envIter.next();
             intent.putExtra("env" + c, entry.getKey() + "="
                             + entry.getValue());
             c++;
         }
     }
 
+    @Override
     public void doRestart() {
         doRestart(RESTARTER_ACTION, null, null);
     }
 
     public void doRestart(String args) {
         doRestart(RESTARTER_ACTION, args, null);
     }
 
@@ -2217,16 +2234,17 @@ public abstract class GeckoApp
             if (cleanupVersion != CURRENT_CLEANUP_VERSION) {
                 SharedPreferences.Editor editor = GeckoApp.this.getSharedPreferences().edit();
                 editor.putInt(CLEANUP_VERSION, CURRENT_CLEANUP_VERSION);
                 editor.apply();
             }
         }
     }
 
+    @Override
     public PromptService getPromptService() {
         return mPromptService;
     }
 
     @Override
     public void onBackPressed() {
         if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
             super.onBackPressed();
@@ -2282,16 +2300,17 @@ public abstract class GeckoApp
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (!ActivityHandlerHelper.handleActivityResult(requestCode, resultCode, data)) {
             super.onActivityResult(requestCode, resultCode, data);
         }
     }
 
+    @Override
     public AbsoluteLayout getPluginContainer() { return mPluginContainer; }
 
     // Accelerometer.
     @Override
     public void onAccuracyChanged(Sensor sensor, int accuracy) {
     }
 
     @Override
@@ -2320,16 +2339,17 @@ public abstract class GeckoApp
     public void onStatusChanged(String provider, int status, Bundle extras)
     {
     }
 
     private static final String CPU = "cpu";
     private static final String SCREEN = "screen";
 
     // Called when a Gecko Hal WakeLock is changed
+    @Override
     public void notifyWakeLockChanged(String topic, String state) {
         PowerManager.WakeLock wl = mWakeLocks.get(topic);
         if (state.equals("locked-foreground") && wl == null) {
             PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 
             if (CPU.equals(topic)) {
               wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, topic);
             } else if (SCREEN.equals(topic)) {
@@ -2341,16 +2361,17 @@ public abstract class GeckoApp
               mWakeLocks.put(topic, wl);
             }
         } else if (!state.equals("locked-foreground") && wl != null) {
             wl.release();
             mWakeLocks.remove(topic);
         }
     }
 
+    @Override
     public void notifyCheckUpdateResult(String result) {
         GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Update:CheckResult", result));
     }
 
     protected void geckoConnected() {
         mLayerView.geckoConnected();
         mLayerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
     }
--- a/mobile/android/base/GeckoJavaSampler.java
+++ b/mobile/android/base/GeckoJavaSampler.java
@@ -66,16 +66,17 @@ public class GeckoJavaSampler {
         private int mSamplePos;
 
         public SamplingThread(final int aInterval, final int aSampleCount) {
             // If we sample faster then 10ms we get to many missed samples
             mInterval = Math.max(10, aInterval);
             mSampleCount = aSampleCount;
         }
 
+        @Override
         public void run() {
             synchronized (GeckoJavaSampler.class) {
                 mSamples.put(0, new Sample[mSampleCount]);
                 mSamplePos = 0;
 
                 // Find the main thread
                 Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
                 for (Thread t : threadSet) {
--- a/mobile/android/base/GeckoView.java
+++ b/mobile/android/base/GeckoView.java
@@ -349,16 +349,17 @@ public class GeckoView extends LayerView
     public static GeckoAppShell.GeckoInterface getGeckoInterface() {
         return GeckoAppShell.getGeckoInterface();
     }
 
     protected String getSharedPreferencesFile() {
         return DEFAULT_SHARED_PREFERENCES_FILE;
     }
 
+    @Override
     public SharedPreferences getSharedPreferences() {
         return getContext().getSharedPreferences(getSharedPreferencesFile(), 0);
     }
 
     /**
     * Wrapper for a browser in the GeckoView container. Associated with a browser
     * element in the Gecko system.
     */
--- a/mobile/android/base/GeckoViewChrome.java
+++ b/mobile/android/base/GeckoViewChrome.java
@@ -5,57 +5,62 @@
 
 package org.mozilla.gecko;
 
 public class GeckoViewChrome implements GeckoView.ChromeDelegate {
     /**
     * Tell the host application that Gecko is ready to handle requests.
     * @param view The GeckoView that initiated the callback.
     */
+    @Override
     public void onReady(GeckoView view) {}
 
     /**
     * Tell the host application to display an alert dialog.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is loading the content.
     * @param message The string to display in the dialog.
     * @param result A PromptResult used to send back the result without blocking.
     * Defaults to cancel requests.
     */
+    @Override
     public void onAlert(GeckoView view, GeckoView.Browser browser, String message, GeckoView.PromptResult result) {
         result.cancel();
     }
 
     /**
     * Tell the host application to display a confirmation dialog.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is loading the content.
     * @param message The string to display in the dialog.
     * @param result A PromptResult used to send back the result without blocking.
     * Defaults to cancel requests.
     */
+    @Override
     public void onConfirm(GeckoView view, GeckoView.Browser browser, String message, GeckoView.PromptResult result) {
         result.cancel();
     }
 
     /**
     * Tell the host application to display an input prompt dialog.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is loading the content.
     * @param message The string to display in the dialog.
     * @param defaultValue The string to use as default input.
     * @param result A PromptResult used to send back the result without blocking.
     * Defaults to cancel requests.
     */
+    @Override
     public void onPrompt(GeckoView view, GeckoView.Browser browser, String message, String defaultValue, GeckoView.PromptResult result) {
         result.cancel();
     }
 
     /**
     * Tell the host application to display a remote debugging request dialog.
     * @param view The GeckoView that initiated the callback.
     * @param result A PromptResult used to send back the result without blocking.
     * Defaults to cancel requests.
     */
+    @Override
     public void onDebugRequest(GeckoView view, GeckoView.PromptResult result) {
         result.cancel();
     }
 }
--- a/mobile/android/base/GeckoViewContent.java
+++ b/mobile/android/base/GeckoViewContent.java
@@ -7,45 +7,50 @@ package org.mozilla.gecko;
 
 public class GeckoViewContent implements GeckoView.ContentDelegate {
     /**
     * A Browser has started loading content from the network.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is loading the content.
     * @param url The resource being loaded.
     */
+    @Override
     public void onPageStart(GeckoView view, GeckoView.Browser browser, String url) {}
 
     /**
     * A Browser has finished loading content from the network.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that was loading the content.
     * @param success Whether the page loaded successfully or an error occured.
     */
+    @Override
     public void onPageStop(GeckoView view, GeckoView.Browser browser, boolean success) {}
 
     /**
     * A Browser is displaying content. This page could have been loaded via
     * network or from the session history.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is showing the content.
     */
+    @Override
     public void onPageShow(GeckoView view, GeckoView.Browser browser) {}
 
     /**
     * A page title was discovered in the content or updated after the content
     * loaded.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is showing the content.
     * @param title The title sent from the content.
     */
+    @Override
     public void onReceivedTitle(GeckoView view, GeckoView.Browser browser, String title) {}
 
     /**
     * A link element was discovered in the content or updated after the content
     * loaded that specifies a favicon.
     * @param view The GeckoView that initiated the callback.
     * @param browser The Browser that is showing the content.
     * @param url The href of the link element specifying the favicon.
     * @param size The maximum size specified for the favicon, or -1 for any size.
     */
+    @Override
     public void onReceivedFavicon(GeckoView view, GeckoView.Browser browser, String url, int size) {}
 }
--- a/mobile/android/base/RemoteClientsDialogFragment.java
+++ b/mobile/android/base/RemoteClientsDialogFragment.java
@@ -107,16 +107,17 @@ public class RemoteClientsDialogFragment
                             checked.add(clients.get(i));
                         }
                     }
                     notifyListener(checked);
                 }
             });
         } else {
             builder.setItems(clientNames, new DialogInterface.OnClickListener() {
+                @Override
                 public void onClick(DialogInterface dialog, int index) {
                     final ArrayList<RemoteClient> checked = new ArrayList<RemoteClient>();
                     checked.add(clients.get(index));
                     notifyListener(checked);
                 }
             });
         }
 
--- a/mobile/android/base/TextSelection.java
+++ b/mobile/android/base/TextSelection.java
@@ -272,45 +272,49 @@ class TextSelection extends Layer implem
             for (int i = 0; i < length; i++) {
                 try {
                     final JSONObject obj = mItems.getJSONObject(i);
                     final GeckoMenuItem menuitem = (GeckoMenuItem) menu.add(0, i, 0, obj.optString("label"));
                     final int actionEnum = obj.optBoolean("showAsAction") ? GeckoMenuItem.SHOW_AS_ACTION_ALWAYS : GeckoMenuItem.SHOW_AS_ACTION_NEVER;
                     menuitem.setShowAsAction(actionEnum, R.attr.menuItemActionModeStyle);
 
                     BitmapUtils.getDrawable(mStartHandle.getContext(), obj.optString("icon"), new BitmapLoader() {
+                        @Override
                         public void onBitmapFound(Drawable d) {
                             if (d != null) {
                                 menuitem.setIcon(d);
                             }
                         }
                     });
                 } catch(Exception ex) {
                     Log.i(LOGTAG, "Exception building menu", ex);
                 }
             }
             return true;
         }
 
+        @Override
         public boolean onCreateActionMode(ActionModeCompat mode, Menu menu) {
             mActionMode = mode;
             return true;
         }
 
+        @Override
         public boolean onActionItemClicked(ActionModeCompat mode, MenuItem item) {
             try {
                 final JSONObject obj = mItems.getJSONObject(item.getItemId());
                 GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("TextSelection:Action", obj.optString("id")));
                 return true;
             } catch(Exception ex) {
                 Log.i(LOGTAG, "Exception calling action", ex);
             }
             return false;
         }
 
         // Called when the user exits the action mode
+        @Override
         public void onDestroyActionMode(ActionModeCompat mode) {
             mActionMode = null;
             mCallback = null;
             GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("TextSelection:End", null));
         }
     }
 }
--- a/mobile/android/base/db/TabsProvider.java
+++ b/mobile/android/base/db/TabsProvider.java
@@ -209,16 +209,17 @@ public class TabsProvider extends PerPro
                 return Clients.CONTENT_ITEM_TYPE;
         }
 
         debug("URI has unrecognized type: " + uri);
 
         return null;
     }
 
+    @Override
     @SuppressWarnings("fallthrough")
     public int deleteInTransaction(Uri uri, String selection, String[] selectionArgs) {
         trace("Calling delete in transaction on URI: " + uri);
 
         final int match = URI_MATCHER.match(uri);
         int deleted = 0;
 
         switch (match) {
@@ -250,16 +251,17 @@ public class TabsProvider extends PerPro
                 throw new UnsupportedOperationException("Unknown delete URI " + uri);
         }
 
         debug("Deleted " + deleted + " rows for URI: " + uri);
 
         return deleted;
     }
 
+    @Override
     public Uri insertInTransaction(Uri uri, ContentValues values) {
         trace("Calling insert in transaction on URI: " + uri);
 
         final SQLiteDatabase db = getWritableDatabase(uri);
         int match = URI_MATCHER.match(uri);
         long id = -1;
 
         switch (match) {
@@ -282,16 +284,17 @@ public class TabsProvider extends PerPro
         debug("Inserted ID in database: " + id);
 
         if (id >= 0)
             return ContentUris.withAppendedId(uri, id);
 
         return null;
     }
 
+    @Override
     public int updateInTransaction(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
         trace("Calling update in transaction on URI: " + uri);
 
         int match = URI_MATCHER.match(uri);
         int updated = 0;
 
         switch (match) {
             case CLIENTS_ID:
--- a/mobile/android/base/db/TopSitesCursorWrapper.java
+++ b/mobile/android/base/db/TopSitesCursorWrapper.java
@@ -471,16 +471,17 @@ public class TopSitesCursorWrapper imple
         throw new UnsupportedOperationException();
     }
 
     @Override
     public boolean getWantsAllOnMoveCalls() {
         return false;
     }
 
+    @Override
     public Uri getNotificationUri() {
         // There's no single notification URI for the wrapper
         return null;
     }
 
     @Override
     public void setNotificationUri(ContentResolver cr, Uri uri) {
         // Keep the original notification URI for the
--- a/mobile/android/base/gfx/BitmapUtils.java
+++ b/mobile/android/base/gfx/BitmapUtils.java
@@ -139,16 +139,17 @@ public final class BitmapUtils {
         runOnBitmapFoundOnUiThread(loader, null);
     }
 
     public static void getThumbnailDrawable(final Context context, final String data, final BitmapLoader loader) {
          int id = Integer.parseInt(data.substring(10), 10);
          final Tab tab = Tabs.getInstance().getTab(id);
          runOnBitmapFoundOnUiThread(loader, tab.getThumbnail());
          Tabs.registerOnTabsChangedListener(new Tabs.OnTabsChangedListener() {
+                 @Override
                  public void onTabChanged(Tab t, Tabs.TabEvents msg, Object data) {
                      if (tab == t && msg == Tabs.TabEvents.THUMBNAIL) {
                          Tabs.unregisterOnTabsChangedListener(this);
                          runOnBitmapFoundOnUiThread(loader, t.getThumbnail());
                      }
                  }
              });
          ThumbnailHelper.getInstance().getAndProcessThumbnailFor(tab);
--- a/mobile/android/base/gfx/NativePanZoomController.java
+++ b/mobile/android/base/gfx/NativePanZoomController.java
@@ -27,68 +27,82 @@ class NativePanZoomController implements
         mDispatcher = dispatcher;
         if (GeckoThread.checkLaunchState(GeckoThread.LaunchState.GeckoRunning)) {
             init();
         } else {
             mDispatcher.registerGeckoThreadListener(this, "Gecko:Ready");
         }
     }
 
+    @Override
     public void handleMessage(String event, JSONObject message) {
         if ("Gecko:Ready".equals(event)) {
             mDispatcher.unregisterGeckoThreadListener(this, "Gecko:Ready");
             init();
         }
     }
 
+    @Override
     public boolean onTouchEvent(MotionEvent event) {
         GeckoEvent wrapped = GeckoEvent.createMotionEvent(event, true);
         return handleTouchEvent(wrapped);
     }
 
+    @Override
     public boolean onMotionEvent(MotionEvent event) {
         // FIXME implement this
         return false;
     }
 
+    @Override
     public boolean onKeyEvent(KeyEvent event) {
         // FIXME implement this
         return false;
     }
 
+    @Override
     public PointF getVelocityVector() {
         // FIXME implement this
         return new PointF(0, 0);
     }
 
+    @Override
     public void pageRectUpdated() {
         // no-op in APZC, I think
     }
 
+    @Override
     public void abortPanning() {
         // no-op in APZC, I think
     }
 
+    @Override
     public void notifyDefaultActionPrevented(boolean prevented) {
         // This should never get called; there is a different
         // codepath that notifies the APZ code of this.
         throw new IllegalStateException("APZCCallbackHandler::NotifyDefaultPrevented should be getting called, not this!");
     }
 
+    @Override
     public native void abortAnimation();
 
     private native void init();
     private native boolean handleTouchEvent(GeckoEvent event);
     private native void handleMotionEvent(GeckoEvent event);
 
+    @Override
     public native void destroy();
+    @Override
     public native boolean getRedrawHint();
+    @Override
     public native void setOverScrollMode(int overscrollMode);
+    @Override
     public native int getOverScrollMode();
 
     @WrapElementForJNI(allowMultithread = true, stubName = "RequestContentRepaintWrapper")
     private void requestContentRepaint(float x, float y, float width, float height, float resolution) {
         mTarget.forceRedraw(new DisplayPortMetrics(x, y, x + width, y + height, resolution));
     }
 
+    @Override
     public void setOverscrollHandler(final Overscroll listener) {
     }
 }
--- a/mobile/android/base/gfx/OverscrollEdgeEffect.java
+++ b/mobile/android/base/gfx/OverscrollEdgeEffect.java
@@ -29,16 +29,17 @@ public class OverscrollEdgeEffect implem
     public OverscrollEdgeEffect(final View v) {
         mView = v;
         Context context = v.getContext();
         for (int i = 0; i < 4; i++) {
             mEdges[i] = new EdgeEffect(context);
         }
     }
 
+    @Override
     public void setSize(final int width, final int height) {
         mEdges[LEFT].setSize(height, width);
         mEdges[RIGHT].setSize(height, width);
         mEdges[TOP].setSize(width, height);
         mEdges[BOTTOM].setSize(width, height);
     }
 
     private EdgeEffect getEdgeForAxisAndSide(final Axis axis, final float side) {
@@ -60,41 +61,44 @@ public class OverscrollEdgeEffect implem
     private void invalidate() {
         if (Versions.feature16Plus) {
             mView.postInvalidateOnAnimation();
         } else {
             mView.postInvalidateDelayed(10);
         }
     }
 
+    @Override
     public void setVelocity(final float velocity, final Axis axis) {
         final EdgeEffect edge = getEdgeForAxisAndSide(axis, velocity);
 
         // If we're showing overscroll already, start fading it out.
         if (!edge.isFinished()) {
             edge.onRelease();
         } else {
             // Otherwise, show an absorb effect
             edge.onAbsorb((int)velocity);
         }
 
         invalidate();
     }
 
+    @Override
     public void setDistance(final float distance, final Axis axis) {
         // The first overscroll event often has zero distance. Throw it out
         if (distance == 0.0f) {
             return;
         }
 
         final EdgeEffect edge = getEdgeForAxisAndSide(axis, (int)distance);
         edge.onPull(distance / (axis == Axis.X ? mView.getWidth() : mView.getHeight()));
         invalidate();
     }
 
+    @Override
     public void draw(final Canvas canvas, final ImmutableViewportMetrics metrics) {
         if (metrics == null) {
             return;
         }
 
         // If we're pulling an edge, or fading it out, draw!
         boolean invalidate = false;
         if (!mEdges[TOP].isFinished()) {
--- a/mobile/android/base/health/BrowserHealthRecorder.java
+++ b/mobile/android/base/health/BrowserHealthRecorder.java
@@ -96,26 +96,29 @@ public class BrowserHealthRecorder imple
     private final ConfigurationProvider configProvider;
     private final SharedPreferences prefs;
 
     // We track previousSession to avoid order-of-initialization confusion. We
     // accept it in the constructor, and process it after init.
     private final SessionInformation previousSession;
     private volatile SessionInformation session;
 
+    @Override
     public void setCurrentSession(SessionInformation session) {
         this.session = session;
     }
 
+    @Override
     public void recordGeckoStartupTime(long duration) {
         if (this.session == null) {
             return;
         }
         this.session.setTimedGeckoStartup(duration);
     }
+    @Override
     public void recordJavaStartupTime(long duration) {
         if (this.session == null) {
             return;
         }
         this.session.setTimedJavaStartup(duration);
     }
 
     /**
@@ -159,24 +162,26 @@ public class BrowserHealthRecorder imple
             Log.e(LOG_TAG, "Exception initializing.", e);
         }
 
         this.configProvider = new AndroidConfigurationProvider(context);
 
         this.prefs = appPrefs;
     }
 
+    @Override
     public boolean isEnabled() {
         return true;
     }
 
     /**
      * Shut down database connections, unregister event listeners, and perform
      * provider-specific uninitialization.
      */
+    @Override
     public synchronized void close() {
         switch (this.state) {
             case CLOSED:
                 Log.w(LOG_TAG, "Ignoring attempt to double-close closed BrowserHealthRecorder.");
                 return;
             case INITIALIZED:
                 Log.i(LOG_TAG, "Closing Health Report client.");
                 break;
@@ -203,31 +208,34 @@ public class BrowserHealthRecorder imple
             EVENT_SNAPSHOT,
             EVENT_ADDONS_CHANGE,
             EVENT_ADDONS_UNINSTALLING,
             EVENT_PREF_CHANGE,
             EVENT_KEYWORD_SEARCH,
             EVENT_SEARCH);
     }
 
+    @Override
     public void onAppLocaleChanged(String to) {
         Log.d(LOG_TAG, "Setting health recorder app locale to " + to);
         this.profileCache.beginInitialization();
         this.profileCache.setAppLocale(to);
     }
 
+    @Override
     public void onAddonChanged(String id, JSONObject json) {
         this.profileCache.beginInitialization();
         try {
             this.profileCache.updateJSONForAddon(id, json);
         } catch (IllegalStateException e) {
             Log.w(LOG_TAG, "Attempted to update add-on cache prior to full init.", e);
         }
     }
 
+    @Override
     public void onAddonUninstalling(String id) {
         this.profileCache.beginInitialization();
         try {
             this.profileCache.removeAddon(id);
         } catch (IllegalStateException e) {
             Log.w(LOG_TAG, "Attempted to update add-on cache prior to full init.", e);
         }
     }
@@ -238,25 +246,27 @@ public class BrowserHealthRecorder imple
      * for use in future events.
      *
      * Invoke this method after calls that mutate the environment.
      *
      * If this change resulted in a transition between two environments, {@link
      * #onEnvironmentTransition(int, int, boolean, String)} will be invoked on the background
      * thread.
      */
+    @Override
     public synchronized void onEnvironmentChanged() {
         onEnvironmentChanged(true, "E");
     }
 
     /**
      * If `startNewSession` is false, it means no new session should begin
      * (e.g., because we're about to restart, and we don't want to create
      * an orphan).
      */
+    @Override
     public synchronized void onEnvironmentChanged(final boolean startNewSession, final String sessionEndReason) {
         final int previousEnv = this.env;
         this.env = -1;
         try {
             profileCache.completeInitialization();
         } catch (java.io.IOException e) {
             Log.e(LOG_TAG, "Error completing profile cache initialization.", e);
             this.state = State.INITIALIZATION_FAILED;
@@ -680,16 +690,17 @@ public class BrowserHealthRecorder imple
     }
 
     /**
      * Record a search.
      *
      * @param engineID the string identifier for the engine. Can be <code>null</code>.
      * @param location one of a fixed set of locations: see {@link #SEARCH_LOCATIONS}.
      */
+    @Override
     public void recordSearch(final String engineID, final String location) {
         if (this.state != State.INITIALIZED) {
             Log.d(LOG_TAG, "Not initialized: not recording search. (" + this.state + ")");
             return;
         }
 
         final int env = this.env;
 
@@ -819,16 +830,17 @@ public class BrowserHealthRecorder imple
             final int day = storage.getDay(session.wallStartTime);
             storage.recordDailyDiscrete(environment, day, sessionField, value);
             Log.v(LOG_TAG, "Recorded session entry for env " + environment + ", current is " + env);
         } catch (Exception e) {
             Log.w(LOG_TAG, "Unable to record session completion.", e);
         }
     }
 
+    @Override
     public void checkForOrphanSessions() {
         if (!this.orphanChecked.compareAndSet(false, true)) {
             Log.w(LOG_TAG, "Attempting to check for orphan sessions more than once.");
             return;
         }
 
         Log.d(LOG_TAG, "Checking for orphan session.");
         if (this.previousSession == null) {
@@ -849,26 +861,28 @@ public class BrowserHealthRecorder imple
                                this.previousSession.getCrashedJSON());
         } catch (Exception e) {
             Log.w(LOG_TAG, "Unable to generate session JSON.", e);
 
             // Future: record this exception in FHR's own error submitter.
         }
     }
 
+    @Override
     public void recordSessionEnd(String reason, SharedPreferences.Editor editor) {
         recordSessionEnd(reason, editor, env);
     }
 
     /**
      * Record that the current session ended. Does not commit the provided editor.
      *
      * @param environment An environment ID. This allows callers to record the
      *                    end of a session due to an observed environment change.
      */
+    @Override
     public void recordSessionEnd(String reason, SharedPreferences.Editor editor, final int environment) {
         Log.d(LOG_TAG, "Recording session end: " + reason);
         if (state != State.INITIALIZED) {
             // Something has gone awry.
             Log.e(LOG_TAG, "Attempted to record session end without initialized recorder.");
             return;
         }
 
--- a/mobile/android/base/health/StubbedHealthRecorder.java
+++ b/mobile/android/base/health/StubbedHealthRecorder.java
@@ -9,30 +9,44 @@ import android.content.SharedPreferences
 
 import org.json.JSONObject;
 
 /**
  * StubbedHealthRecorder is an implementation of HealthRecorder that does (you guessed it!)
  * nothing.
  */
 public class StubbedHealthRecorder implements HealthRecorder {
+    @Override
     public boolean isEnabled() { return false; }
 
+    @Override
     public void setCurrentSession(SessionInformation session) { }
+    @Override
     public void checkForOrphanSessions() { }
 
+    @Override
     public void recordGeckoStartupTime(long duration) { }
+    @Override
     public void recordJavaStartupTime(long duration) { }
+    @Override
     public void recordSearch(final String engineID, final String location) { }
+    @Override
     public void recordSessionEnd(String reason, SharedPreferences.Editor editor) { }
+    @Override
     public void recordSessionEnd(String reason, SharedPreferences.Editor editor, final int environment) { }
 
+    @Override
     public void onAppLocaleChanged(String to) { }
+    @Override
     public void onAddonChanged(String id, JSONObject json) { }
+    @Override
     public void onAddonUninstalling(String id) { }
+    @Override
     public void onEnvironmentChanged() { }
+    @Override
     public void onEnvironmentChanged(final boolean startNewSession, final String sessionEndReason) { }
 
+    @Override
     public void close() { }
 
     @Override
     public void processDelayed() { }
 }
--- a/mobile/android/base/home/BookmarksListAdapter.java
+++ b/mobile/android/base/home/BookmarksListAdapter.java
@@ -80,20 +80,22 @@ class BookmarksListAdapter extends Multi
 
         @Override
         public void writeToParcel(Parcel dest, int flags) {
             dest.writeInt(id);
             dest.writeString(title);
         }
 
         public static final Creator<FolderInfo> CREATOR = new Creator<FolderInfo>() {
+            @Override
             public FolderInfo createFromParcel(Parcel in) {
                 return new FolderInfo(in);
             }
 
+            @Override
             public FolderInfo[] newArray(int size) {
                 return new FolderInfo[size];
             }
         };
     }
 
     // A listener that knows how to refresh the list for a given folder id.
     // This is usually implemented by the enclosing fragment/activity.
--- a/mobile/android/base/home/PanelLayout.java
+++ b/mobile/android/base/home/PanelLayout.java
@@ -184,20 +184,22 @@ abstract class PanelLayout extends Frame
             return "{ index: " + mViewIndex +
                    ", type: " + mType +
                    ", dataset: " + mDatasetId +
                    ", filter: " + mFilterDetail +
                    " }";
         }
 
         public static final Creator<DatasetRequest> CREATOR = new Creator<DatasetRequest>() {
+            @Override
             public DatasetRequest createFromParcel(Parcel in) {
                 return new DatasetRequest(in);
             }
 
+            @Override
             public DatasetRequest[] newArray(int size) {
                 return new DatasetRequest[size];
             }
         };
     }
 
     /**
      * Defines the contract with the component that is responsible
@@ -624,20 +626,22 @@ abstract class PanelLayout extends Frame
 
         @Override
         public void writeToParcel(Parcel dest, int flags) {
             dest.writeString(filter);
             dest.writeString(title);
         }
 
         public static final Creator<FilterDetail> CREATOR = new Creator<FilterDetail>() {
+            @Override
             public FilterDetail createFromParcel(Parcel in) {
                 return new FilterDetail(in);
             }
 
+            @Override
             public FilterDetail[] newArray(int size) {
                 return new FilterDetail[size];
             }
         };
     }
 
     /**
      * Pushes filter to {@code ViewState}'s stack and makes request for new filter value.
--- a/mobile/android/base/home/RecentTabsPanel.java
+++ b/mobile/android/base/home/RecentTabsPanel.java
@@ -358,31 +358,33 @@ public class RecentTabsPanel extends Hom
         private static final int[] VIEW_TYPES = new int[] { ROW_STANDARD, ROW_HEADER, ROW_OPEN_ALL };
         private static final int[] LAYOUT_TYPES =
             new int[] { R.layout.home_item_row, R.layout.home_header_row, R.layout.home_open_all_row };
 
         public RecentTabsAdapter(Context context) {
             super(context, null, VIEW_TYPES, LAYOUT_TYPES);
         }
 
+        @Override
         public int getItemViewType(int position) {
             final Cursor c = getCursor(position);
             final int type = c.getInt(c.getColumnIndexOrThrow(RecentTabs.TYPE));
 
             if (type == RecentTabs.TYPE_HEADER) {
                 return ROW_HEADER;
             }
 
             if (type == RecentTabs.TYPE_OPEN_ALL_LAST_TIME || type == RecentTabs.TYPE_OPEN_ALL_CLOSED) {
                 return ROW_OPEN_ALL;
             }
 
             return ROW_STANDARD;
          }
 
+        @Override
         public boolean isEnabled(int position) {
             return (getItemViewType(position) != ROW_HEADER);
         }
 
         @Override
         public void bindView(View view, Context context, int position) {
             final int itemType = getItemViewType(position);
             if (itemType == ROW_OPEN_ALL) {
--- a/mobile/android/base/home/RemoteTabsExpandableListFragment.java
+++ b/mobile/android/base/home/RemoteTabsExpandableListFragment.java
@@ -353,16 +353,17 @@ public class RemoteTabsExpandableListFra
 
             final TextView emptyText = (TextView) mEmptyView.findViewById(R.id.home_empty_text);
             emptyText.setText(R.string.home_remote_tabs_empty);
 
             mList.setEmptyView(mEmptyView);
         }
     }
 
+    @Override
     public void onClients(List<RemoteClient> clients) {
         // The clients listed were hidden and have been checked by the user. We
         // interpret that as "show these clients now".
         for (RemoteClient client : clients) {
             sState.setClientHidden(client.guid, false);
             // There's no particular need to do this, but if you want to see it,
             // let's show it all.
             sState.setClientCollapsed(client.guid, false);
@@ -438,19 +439,21 @@ public class RemoteTabsExpandableListFra
             return getActivity();
         }
 
         @Override
         public Account getAccount() {
             return FirefoxAccounts.getFirefoxAccount(getContext());
         }
 
+        @Override
         public void onSyncStarted() {
         }
 
+        @Override
         public void onSyncFinished() {
             mRefreshLayout.setRefreshing(false);
         }
     }
 
     /**
      * Stores information regarding the creation of the context menu for a remote client.
      */
--- a/mobile/android/base/overlays/service/sharemethods/AddBookmark.java
+++ b/mobile/android/base/overlays/service/sharemethods/AddBookmark.java
@@ -19,16 +19,17 @@ public class AddBookmark extends ShareMe
         ContentResolver resolver = context.getContentResolver();
 
         LocalBrowserDB browserDB = new LocalBrowserDB(GeckoProfile.DEFAULT_PROFILE);
         browserDB.addBookmark(resolver, shareData.title, shareData.url);
 
         return Result.SUCCESS;
     }
 
+    @Override
     public String getSuccessMesssage() {
         return context.getResources().getString(R.string.bookmark_added);
     }
 
     // Unused.
     @Override
     public String getFailureMessage() {
         return null;
--- a/mobile/android/base/overlays/ui/SendTabList.java
+++ b/mobile/android/base/overlays/ui/SendTabList.java
@@ -143,16 +143,17 @@ public class SendTabList extends ListVie
         final String[] dialogElements = new String[records.length];
 
         for (int i = 0; i < records.length; i++) {
             dialogElements[i] = records[i].name;
         }
 
         builder.setTitle(R.string.overlay_share_select_device)
                .setItems(dialogElements, new DialogInterface.OnClickListener() {
+                   @Override
                    public void onClick(DialogInterface dialog, int index) {
                        listener.onSendTabTargetSelected(records[index].guid);
                    }
                });
 
         return builder.create();
     }
 
--- a/mobile/android/base/preferences/GeckoPreferences.java
+++ b/mobile/android/base/preferences/GeckoPreferences.java
@@ -435,16 +435,17 @@ OnSharedPreferenceChangeListener
             }
         }
 
         // Build fragment intent.
         intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, GeckoPreferenceFragment.class.getName());
         intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
     }
 
+    @Override
     public boolean isValidFragment(String fragmentName) {
         return GeckoPreferenceFragment.class.getName().equals(fragmentName);
     }
 
     @Override
     public void onBuildHeaders(List<Header> target) {
         if (onIsMultiPane()) {
             loadHeadersFromResource(R.xml.preference_headers, target);
@@ -1283,16 +1284,17 @@ OnSharedPreferenceChangeListener
                 final Preference pref = getField(prefName);
                 final CheckBoxPrefSetter prefSetter;
                 if (Versions.preICS) {
                     prefSetter = new CheckBoxPrefSetter();
                 } else {
                     prefSetter = new TwoStatePrefSetter();
                 }
                 ThreadUtils.postToUiThread(new Runnable() {
+                    @Override
                     public void run() {
                         prefSetter.setBooleanPref(pref, value);
                     }
                 });
             }
 
             @Override
             public void prefValue(String prefName, final String value) {
--- a/mobile/android/base/prompts/IconGridInput.java
+++ b/mobile/android/base/prompts/IconGridInput.java
@@ -154,16 +154,17 @@ public class IconGridInput extends Promp
 
         public IconGridItem(final Context context, final JSONObject obj) {
             label = obj.optString("name");
             final String iconUrl = obj.optString("iconUri");
             description = obj.optString("description");
             selected = obj.optBoolean("selected");
 
             BitmapUtils.getDrawable(context, iconUrl, new BitmapUtils.BitmapLoader() {
+                @Override
                 public void onBitmapFound(Drawable d) {
                     icon = d;
                     if (mAdapter != null) {
                         mAdapter.notifyDataSetChanged();
                     }
                 }
             });
         }
--- a/mobile/android/base/prompts/PromptInput.java
+++ b/mobile/android/base/prompts/PromptInput.java
@@ -57,16 +57,17 @@ public class PromptInput {
         public static final String INPUT_TYPE = "textbox";
 
         public EditInput(JSONObject object) {
             super(object);
             mHint = object.optString("hint");
             mAutofocus = object.optBoolean("autofocus");
         }
 
+        @Override
         public View getView(final Context context) throws UnsupportedOperationException {
             EditText input = new FloatingHintEditText(context);
             input.setInputType(InputType.TYPE_CLASS_TEXT);
             input.setText(mValue);
 
             if (!TextUtils.isEmpty(mHint)) {
                 input.setHint(mHint);
             }
@@ -95,31 +96,33 @@ public class PromptInput {
     }
 
     public static class NumberInput extends EditInput {
         public static final String INPUT_TYPE = "number";
         public NumberInput(JSONObject obj) {
             super(obj);
         }
 
+        @Override
         public View getView(final Context context) throws UnsupportedOperationException {
             EditText input = (EditText) super.getView(context);
             input.setRawInputType(Configuration.KEYBOARD_12KEY);
             input.setInputType(InputType.TYPE_CLASS_NUMBER |
                                InputType.TYPE_NUMBER_FLAG_SIGNED);
             return input;
         }
     }
 
     public static class PasswordInput extends EditInput {
         public static final String INPUT_TYPE = "password";
         public PasswordInput(JSONObject obj) {
             super(obj);
         }
 
+        @Override
         public View getView(Context context) throws UnsupportedOperationException {
             EditText input = (EditText) super.getView(context);
             input.setInputType(InputType.TYPE_CLASS_TEXT |
                                InputType.TYPE_TEXT_VARIATION_PASSWORD |
                                InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
             return input;
         }
 
@@ -134,16 +137,17 @@ public class PromptInput {
         public static final String INPUT_TYPE = "checkbox";
         private final boolean mChecked;
 
         public CheckboxInput(JSONObject obj) {
             super(obj);
             mChecked = obj.optBoolean("checked");
         }
 
+        @Override
         public View getView(Context context) throws UnsupportedOperationException {
             CheckBox checkbox = new CheckBox(context);
             checkbox.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
             checkbox.setText(mLabel);
             checkbox.setChecked(mChecked);
             mView = (View)checkbox;
             return mView;
         }
@@ -164,16 +168,17 @@ public class PromptInput {
             "datetime",
             "month"
         };
 
         public DateTimeInput(JSONObject obj) {
             super(obj);
         }
 
+        @Override
         public View getView(Context context) throws UnsupportedOperationException {
             if (mType.equals("date")) {
                 try {
                     DateTimePicker input = new DateTimePicker(context, "yyyy-MM-dd", mValue,
                                                               DateTimePicker.PickersState.DATE);
                     input.toggleCalendar(true);
                     mView = (View)input;
                 } catch (UnsupportedOperationException ex) {
@@ -272,16 +277,17 @@ public class PromptInput {
         public AllCapsTextView textView;
 
         public MenulistInput(JSONObject obj) {
             super(obj);
             mListitems = Prompt.getStringArray(obj, "values");
             mSelected = obj.optInt("selected");
         }
 
+        @Override
         public View getView(final Context context) throws UnsupportedOperationException {
             if (Versions.preHC) {
                 spinner = new Spinner(context);
             } else {
                 spinner = new Spinner(context, Spinner.MODE_DIALOG);
             }
             try {
                 if (mListitems.length > 0) {
@@ -316,16 +322,17 @@ public class PromptInput {
     }
 
     public static class LabelInput extends PromptInput {
         public static final String INPUT_TYPE = "label";
         public LabelInput(JSONObject obj) {
             super(obj);
         }
 
+        @Override
         public View getView(Context context) throws UnsupportedOperationException {
             // not really an input, but a way to add labels and such to the dialog
             TextView view = new TextView(context);
             view.setText(Html.fromHtml(mLabel));
             mView = view;
             return mView;
         }
     }
--- a/mobile/android/base/prompts/PromptService.java
+++ b/mobile/android/base/prompts/PromptService.java
@@ -50,16 +50,17 @@ public class PromptService implements Ge
     @Override
     public void handleMessage(String event, final JSONObject message) {
         // The dialog must be created on the UI thread.
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 Prompt p;
                 p = new Prompt(mContext, new Prompt.PromptCallback() {
+                    @Override
                     public void onPromptFinished(String jsonResult) {
                         try {
                             EventDispatcher.sendResponse(message, new JSONObject(jsonResult));
                         } catch(JSONException ex) {
                             Log.i(LOGTAG, "Error building json response", ex);
                         }
                     }
                 });
--- a/mobile/android/base/tests/testClearPrivateData.java
+++ b/mobile/android/base/tests/testClearPrivateData.java
@@ -43,16 +43,17 @@ public class testClearPrivateData extend
         verifyHistoryCount(0);
 
         // Checking that the user made bookmark is not removed
         mAsserter.ok(mDatabaseHelper.isBookmark(blank2), "Checking that bookmarks have not been removed", "User made bookmarks were not removed with private data");
     }
 
     private void verifyHistoryCount(final int expectedCount) {
         boolean match = waitForTest( new BooleanTest() {
+            @Override
             public boolean test() {
                 return (mDatabaseHelper.getBrowserDBUrls(DatabaseHelper.BrowserDataType.HISTORY).size() == expectedCount);
             }
         }, TEST_WAIT_MS);
         mAsserter.ok(match, "Checking that the number of history items is correct", String.valueOf(expectedCount) + " history items present in the database");
     }
 
     public void clearSiteSettings() {
--- a/mobile/android/base/tests/testFindInPage.java
+++ b/mobile/android/base/tests/testFindInPage.java
@@ -40,16 +40,17 @@ public class testFindInPage extends Pixe
             painted.close();
         }
     }
 
     public void findText(String text, int nrOfMatches){
         selectMenuItem(StringHelper.FIND_IN_PAGE_LABEL);
         close = mDriver.findElement(getActivity(), R.id.find_close);
         boolean success = waitForTest ( new BooleanTest() {
+            @Override
             public boolean test() {
                 next = mDriver.findElement(getActivity(), R.id.find_next);
                 if (next != null) {
                     return true;
                 } else {
                     return false;
                 }
             }
@@ -61,16 +62,17 @@ public class testFindInPage extends Pixe
         mSolo.sleep(500);
 
         mActions.sendKeys(text);
         mActions.sendSpecialKey(Actions.SpecialKey.ENTER);
 
         // Advance a few matches to scroll the page
         for (int i=1;i < nrOfMatches;i++) {
             success = waitForTest ( new BooleanTest() {
+                @Override
                 public boolean test() {
                     if (next.click()) {
                         return true;
                     } else {
                         return false;
                     }
                 }
             }, WAIT_FOR_TEST);
--- a/mobile/android/base/tests/testImportFromAndroid.java
+++ b/mobile/android/base/tests/testImportFromAndroid.java
@@ -134,16 +134,17 @@ public class testImportFromAndroid exten
         selectSettingsItem(StringHelper.CUSTOMIZE_SECTION_LABEL, StringHelper.IMPORT_FROM_ANDROID_LABEL);
 
         // Wait for the Import form Android pop-up to be opened. It has the same title as the option so waiting for the "Cancel" button
         waitForText("Cancel");
         mSolo.clickOnButton("Import");
 
         // Wait until the import pop-up is dismissed. This depending on the number of items in the android history can take up to a few seconds
         boolean importComplete = waitForTest(new BooleanTest() {
+            @Override
             public boolean test() {
                 return !mSolo.searchText("Please wait...");
             }
         }, MAX_WAIT_TIMEOUT);
 
         mAsserter.ok(importComplete, "Waiting for import to finish and the pop-up to be dismissed", "Import was completed and the pop-up was dismissed");
 
         // Import has finished. Waiting to get back to the Settings Menu and looking for the Import&Export subsection
@@ -194,13 +195,14 @@ public class testImportFromAndroid exten
              mDatabaseHelper.deleteBookmark(url);
         }
         // History
         for (String url:androidData) {
              mDatabaseHelper.deleteHistoryItem(url);
         }
     }
 
+    @Override
     public void tearDown() throws Exception {
         deleteImportedData();
         super.tearDown();
     }
 }
--- a/mobile/android/base/tests/testInputUrlBar.java
+++ b/mobile/android/base/tests/testInputUrlBar.java
@@ -40,43 +40,47 @@ public final class testInputUrlBar exten
         assertUrlBarText("zyefcd");
 
         mActions.sendSpecialKey(Actions.SpecialKey.RIGHT);
         mActions.sendKeys("gh");
         assertUrlBarText("zyefcghd");
 
         final EditText editText = mUrlBarEditView;
         runOnUiThreadSync(new Runnable() {
+            @Override
             public void run() {
                 // Select "ef"
                 editText.setSelection(2);
             }
         });
         mActions.sendKeys("op");
         assertUrlBarText("zyopefcghd");
 
         runOnUiThreadSync(new Runnable() {
+            @Override
             public void run() {
                 // Select "cg"
                 editText.setSelection(6, 8);
             }
         });
         mActions.sendKeys("qr");
         assertUrlBarText("zyopefqrhd");
 
         runOnUiThreadSync(new Runnable() {
+            @Override
             public void run() {
                 // Select "op"
                 editText.setSelection(4,2);
             }
         });
         mActions.sendKeys("st");
         assertUrlBarText("zystefqrhd");
 
         runOnUiThreadSync(new Runnable() {
+            @Override
             public void run() {
                 editText.selectAll();
             }
         });
         mActions.sendKeys("uv");
         assertUrlBarText("uv");
 
         // Dismiss the VKB
--- a/mobile/android/base/tests/testMasterPassword.java
+++ b/mobile/android/base/tests/testMasterPassword.java
@@ -131,16 +131,17 @@ public class testMasterPassword extends 
     // Checks to see if the device is a Tablet, because for those devices we need an extra back action to close the keyboard
     public void closeTabletKeyboard() {
         if (dev.type.equals("tablet")) {
             mSolo.sleep(1500);
             toggleVKB();// Close the keyboard for tablets
         }
     }
 
+    @Override
     public void clearPrivateData() {
 
         // Look for the 'Settings' menu if this device/OS uses it
         selectSettingsItem(StringHelper.PRIVACY_SECTION_LABEL, StringHelper.CLEAR_PRIVATE_DATA_LABEL);
 
         waitForText("Browsing history"); // Make sure the Clear private data pop-up is displayed
         Actions.EventExpecter clearPrivateDataEventExpecter = mActions.expectGeckoEvent("Sanitize:Finished");
         if (mSolo.searchText("Clear data") && !mSolo.searchText("Cookies")) {
--- a/mobile/android/base/toolbar/BrowserToolbar.java
+++ b/mobile/android/base/toolbar/BrowserToolbar.java
@@ -673,16 +673,17 @@ public abstract class BrowserToolbar ext
     public void setOnDismissListener(OnDismissListener listener) {
         urlEditLayout.setOnDismissListener(listener);
     }
 
     public void setOnFilterListener(OnFilterListener listener) {
         urlEditLayout.setOnFilterListener(listener);
     }
 
+    @Override
     public void setOnFocusChangeListener(OnFocusChangeListener listener) {
         focusChangeListener = listener;
     }
 
     public void setOnStartEditingListener(OnStartEditingListener listener) {
         startEditingListener = listener;
     }
 
--- a/mobile/android/base/util/WebActivityMapper.java
+++ b/mobile/android/base/util/WebActivityMapper.java
@@ -43,23 +43,25 @@ public final class WebActivityMapper {
 
     /**
      * Provides useful defaults for mime type and uri.
      */
     private static abstract class BaseMapping extends WebActivityMapping {
         /**
          * If 'type' is present in data object, uses the value as the MIME type.
          */
+        @Override
         public String getMime(JSONObject data) throws JSONException {
             return data.optString("type", null);
         }
 
         /**
          * If 'uri' or 'url' is present in data object, uses the respecitve value as the Uri.
          */
+        @Override
         public String getUri(JSONObject data) throws JSONException {
             // Will return uri or url if present.
             String uri = data.optString("uri", null);
             return uri != null ? uri : data.optString("url", null);
         }
     }
 
     public static Intent getIntentForWebActivity(JSONObject message) throws JSONException {
--- a/mobile/android/base/widget/ActivityChooserModel.java
+++ b/mobile/android/base/widget/ActivityChooserModel.java
@@ -974,16 +974,17 @@ public class ActivityChooserModel extend
             }
             ActivityResolveInfo other = (ActivityResolveInfo) obj;
             if (Float.floatToIntBits(weight) != Float.floatToIntBits(other.weight)) {
                 return false;
             }
             return true;
         }
 
+        @Override
         public int compareTo(ActivityResolveInfo another) {
              return  Float.floatToIntBits(another.weight) - Float.floatToIntBits(weight);
         }
 
         @Override
         public String toString() {
             StringBuilder builder = new StringBuilder();
             builder.append("[");
@@ -998,16 +999,17 @@ public class ActivityChooserModel extend
      * Default activity sorter implementation.
      */
     private final class DefaultSorter implements ActivitySorter {
         private static final float WEIGHT_DECAY_COEFFICIENT = 0.95f;
 
         private final Map<String, ActivityResolveInfo> mPackageNameToActivityMap =
             new HashMap<String, ActivityResolveInfo>();
 
+        @Override
         public void sort(Intent intent, List<ActivityResolveInfo> activities,
                 List<HistoricalRecord> historicalRecords) {
             Map<String, ActivityResolveInfo> packageNameToActivityMap =
                 mPackageNameToActivityMap;
             packageNameToActivityMap.clear();
 
             final int activityCount = activities.size();
             for (int i = 0; i < activityCount; i++) {
--- a/mobile/android/base/widget/BasicColorPicker.java
+++ b/mobile/android/base/widget/BasicColorPicker.java
@@ -112,16 +112,17 @@ public class BasicColorPicker extends Li
    private class ColorPickerListAdapter extends ArrayAdapter<Integer> {
         private final List<Integer> mColors;
 
         public ColorPickerListAdapter(Context context, List<Integer> colors) {
             super(context, R.layout.color_picker_row, colors);
             mColors = colors;
         }
 
+        @Override
         public View getView(int position, View convertView, ViewGroup parent) {
             View v = super.getView(position, convertView, parent);
 
             Drawable d = v.getBackground();
             d.setColorFilter(getItem(position), PorterDuff.Mode.MULTIPLY);
             v.setBackgroundDrawable(d);
 
             Drawable check = null;
--- a/mobile/android/base/widget/ButtonToast.java
+++ b/mobile/android/base/widget/ButtonToast.java
@@ -150,20 +150,22 @@ public class ButtonToast {
         } else {
             // Using Android's animation frameworks will not correctly turn off clicking.
             // See bug 885717.
             PropertyAnimator animator = new PropertyAnimator(duration);
             animator.attach(mView, PropertyAnimator.Property.ALPHA, 0.0f);
             animator.addPropertyAnimationListener(new PropertyAnimator.PropertyAnimationListener () {
                 // If we are showing a toast and go in the background
                 // onAnimationEnd will be called when the app is restored
+                @Override
                 public void onPropertyAnimationEnd() {
                     mView.clearAnimation();
                     mView.setVisibility(View.GONE);
                 }
+                @Override
                 public void onPropertyAnimationStart() { }
             });
             animator.start();
         }
     }
 
     private final Runnable mHideRunnable = new Runnable() {
         @Override
--- a/mobile/android/base/widget/TwoWayView.java
+++ b/mobile/android/base/widget/TwoWayView.java
@@ -6296,16 +6296,17 @@ public class TwoWayView extends AdapterV
                 } else {
                     mTouchMode = TOUCH_MODE_DONE_WAITING;
                 }
             }
         }
     }
 
     private class CheckForKeyLongPress extends WindowRunnnable implements Runnable {
+        @Override
         public void run() {
             if (!isPressed() || mSelectedPosition < 0) {
                 return;
             }
 
             final int index = mSelectedPosition - mFirstPosition;
             final View v = getChildAt(index);
 
--- a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/StumblerService.java
+++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/StumblerService.java
@@ -232,16 +232,17 @@ public class StumblerService extends Per
         }
 
         if (!mScanManager.isScanning()) {
             startScanning();
         }
     }
 
     // Note that in passive mode, having data isn't an upload trigger, it is triggered by the start intent
+    @Override
     public void notifyStorageStateEmpty(boolean isEmpty) {
         if (isEmpty) {
             UploadAlarmReceiver.cancelAlarm(this, !mScanManager.isPassiveMode());
         } else if (!mScanManager.isPassiveMode()) {
             UploadAlarmReceiver.scheduleAlarm(this, FREQUENCY_IN_SEC_OF_UPLOAD_IN_ACTIVE_MODE, true /* repeating */);
         }
     }
 }
--- a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/GPSScanner.java
+++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/GPSScanner.java
@@ -76,16 +76,17 @@ public class GPSScanner implements Locat
         LocationManager lm = getLocationManager();
         lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                                   ACTIVE_MODE_GPS_MIN_UPDATE_TIME_MS,
                                   ACTIVE_MODE_GPS_MIN_UPDATE_DISTANCE_M,
                                   this);
 
         reportLocationLost();
         mGPSListener = new GpsStatus.Listener() {
+                @Override
                 public void onGpsStatusChanged(int event) {
                 if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {
                     GpsStatus status = getLocationManager().getGpsStatus(null);
                     Iterable<GpsSatellite> sats = status.getSatellites();
 
                     int satellites = 0;
                     int fixes = 0;
 
--- a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/WifiScanner.java
+++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/WifiScanner.java
@@ -89,16 +89,17 @@ public class WifiScanner extends Broadca
     public synchronized void stop() {
         if (mStarted) {
             mContext.unregisterReceiver(this);
         }
         deactivatePeriodicScan();
         mStarted = false;
     }
 
+    @Override
     public void onReceive(Context c, Intent intent) {
         String action = intent.getAction();
 
         if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
             if (isWifiEnabled()) {
                 activatePeriodicScan(ActiveOrPassiveStumbling.ACTIVE_STUMBLING);
             } else {
                 deactivatePeriodicScan();
--- a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/cellscanner/CellInfo.java
+++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/stumblerthread/scanners/cellscanner/CellInfo.java
@@ -30,20 +30,22 @@ public class CellInfo implements Parcela
     public static final String CELL_RADIO_CDMA = "cdma";
     public static final String CELL_RADIO_LTE = "lte";
 
     public static final int UNKNOWN_CID = -1;
     public static final int UNKNOWN_SIGNAL = -1000;
 
     public static final Parcelable.Creator<CellInfo> CREATOR
             = new Parcelable.Creator<CellInfo>() {
+        @Override
         public CellInfo createFromParcel(Parcel in) {
             return new CellInfo(in);
         }
 
+        @Override
         public CellInfo[] newArray(int size) {
             return new CellInfo[size];
         }
     };
 
     private String mRadio;
     private String mCellRadio;