| LEFT | RIGHT | 
|     1 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- |     1 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- | 
|     2  * This Source Code Form is subject to the terms of the Mozilla Public |     2  * This Source Code Form is subject to the terms of the Mozilla Public | 
|     3  * License, v. 2.0. If a copy of the MPL was not distributed with this |     3  * License, v. 2.0. If a copy of the MPL was not distributed with this | 
|     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 
|     5  |     5  | 
|     6 package org.mozilla.gecko; |     6 package org.mozilla.gecko; | 
|     7  |     7  | 
|     8 import java.io.File; |     8 import java.io.File; | 
|     9 import java.io.FileNotFoundException; |     9 import java.io.FileNotFoundException; | 
|    10 import java.lang.reflect.Method; |    10 import java.lang.reflect.Method; | 
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   246         Log.d(LOGTAG, "BrowserApp.onTabChanged: " + tab.getId() + ": " + msg); |   246         Log.d(LOGTAG, "BrowserApp.onTabChanged: " + tab.getId() + ": " + msg); | 
|   247         switch(msg) { |   247         switch(msg) { | 
|   248             case LOCATION_CHANGE: |   248             case LOCATION_CHANGE: | 
|   249                 if (Tabs.getInstance().isSelectedTab(tab)) { |   249                 if (Tabs.getInstance().isSelectedTab(tab)) { | 
|   250                     maybeCancelFaviconLoad(tab); |   250                     maybeCancelFaviconLoad(tab); | 
|   251                 } |   251                 } | 
|   252                 // fall through |   252                 // fall through | 
|   253             case SELECTED: |   253             case SELECTED: | 
|   254                 if (Tabs.getInstance().isSelectedTab(tab)) { |   254                 if (Tabs.getInstance().isSelectedTab(tab)) { | 
|   255                     updateHomePagerForTab(tab); |   255                     updateHomePagerForTab(tab); | 
 |   256                     if (mMenu != null) | 
 |   257                         org.adblockplus.browser.BrowserAppUtils.updateBlockAdsMe
      nuItem( | 
 |   258                             mMenu.findItem(R.id.block_ads)); | 
|   256                 } |   259                 } | 
|   257                 break; |   260                 break; | 
|   258             case START: |   261             case START: | 
|   259                 if (Tabs.getInstance().isSelectedTab(tab)) { |   262                 if (Tabs.getInstance().isSelectedTab(tab)) { | 
|   260                     invalidateOptionsMenu(); |   263                     invalidateOptionsMenu(); | 
|   261  |   264  | 
|   262                     if (mDynamicToolbar.isEnabled()) { |   265                     if (mDynamicToolbar.isEnabled()) { | 
|   263                         mDynamicToolbar.setVisible(true, VisibilityTransition.AN
      IMATE); |   266                         mDynamicToolbar.setVisible(true, VisibilityTransition.AN
      IMATE); | 
|   264                     } |   267                     } | 
|   265                 } |   268                 } | 
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   552             "Feedback:MaybeLater", |   555             "Feedback:MaybeLater", | 
|   553             "Feedback:OpenPlayStore", |   556             "Feedback:OpenPlayStore", | 
|   554             "Menu:Add", |   557             "Menu:Add", | 
|   555             "Menu:Remove", |   558             "Menu:Remove", | 
|   556             "Reader:ListStatusRequest", |   559             "Reader:ListStatusRequest", | 
|   557             "Reader:Removed", |   560             "Reader:Removed", | 
|   558             "Reader:Share", |   561             "Reader:Share", | 
|   559             "Settings:Show", |   562             "Settings:Show", | 
|   560             "Telemetry:Gather", |   563             "Telemetry:Gather", | 
|   561             "Updater:Launch", |   564             "Updater:Launch", | 
|   562             "BrowserToolbar:Visibility", |   565             "BrowserToolbar:Visibility"); | 
|   563             "BlockAds:Update"); |  | 
|   564  |   566  | 
|   565         Distribution distribution = Distribution.init(this); |   567         Distribution distribution = Distribution.init(this); | 
|   566  |   568  | 
|   567         // Init suggested sites engine in BrowserDB. |   569         // Init suggested sites engine in BrowserDB. | 
|   568         final SuggestedSites suggestedSites = new SuggestedSites(appContext, dis
      tribution); |   570         final SuggestedSites suggestedSites = new SuggestedSites(appContext, dis
      tribution); | 
|   569         BrowserDB.setSuggestedSites(suggestedSites); |   571         BrowserDB.setSuggestedSites(suggestedSites); | 
|   570  |   572  | 
|   571         JavaAddonManager.getInstance().init(appContext); |   573         JavaAddonManager.getInstance().init(appContext); | 
|   572         mSharedPreferencesHelper = new SharedPreferencesHelper(appContext); |   574         mSharedPreferencesHelper = new SharedPreferencesHelper(appContext); | 
|   573         mOrderedBroadcastHelper = new OrderedBroadcastHelper(appContext); |   575         mOrderedBroadcastHelper = new OrderedBroadcastHelper(appContext); | 
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   991             "Feedback:MaybeLater", |   993             "Feedback:MaybeLater", | 
|   992             "Feedback:OpenPlayStore", |   994             "Feedback:OpenPlayStore", | 
|   993             "Menu:Add", |   995             "Menu:Add", | 
|   994             "Menu:Remove", |   996             "Menu:Remove", | 
|   995             "Reader:ListStatusRequest", |   997             "Reader:ListStatusRequest", | 
|   996             "Reader:Removed", |   998             "Reader:Removed", | 
|   997             "Reader:Share", |   999             "Reader:Share", | 
|   998             "Settings:Show", |  1000             "Settings:Show", | 
|   999             "Telemetry:Gather", |  1001             "Telemetry:Gather", | 
|  1000             "Updater:Launch", |  1002             "Updater:Launch", | 
|  1001             "BrowserToolbar:Visibility", |  1003             "BrowserToolbar:Visibility"); | 
|  1002             "BlockAds:Update"); |  | 
|  1003  |  1004  | 
|  1004         if (AppConstants.MOZ_ANDROID_BEAM) { |  1005         if (AppConstants.MOZ_ANDROID_BEAM) { | 
|  1005             NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this); |  1006             NfcAdapter nfc = NfcAdapter.getDefaultAdapter(this); | 
|  1006             if (nfc != null) { |  1007             if (nfc != null) { | 
|  1007                 // null this out even though the docs say it's not needed, |  1008                 // null this out even though the docs say it's not needed, | 
|  1008                 // because the source code looks like it will only do this |  1009                 // because the source code looks like it will only do this | 
|  1009                 // automatically on API 14+ |  1010                 // automatically on API 14+ | 
|  1010                 nfc.setNdefPushMessageCallback(null, this); |  1011                 nfc.setNdefPushMessageCallback(null, this); | 
|  1011             } |  1012             } | 
|  1012         } |  1013         } | 
| (...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1387             Telemetry.HistogramAdd("FENNEC_THUMBNAILS_COUNT", |  1388             Telemetry.HistogramAdd("FENNEC_THUMBNAILS_COUNT", | 
|  1388                     BrowserDB.getCount(getContentResolver(), "thumbnails")); |  1389                     BrowserDB.getCount(getContentResolver(), "thumbnails")); | 
|  1389             Telemetry.HistogramAdd("FENNEC_READING_LIST_COUNT", |  1390             Telemetry.HistogramAdd("FENNEC_READING_LIST_COUNT", | 
|  1390                     BrowserDB.getCount(getContentResolver(), "readinglist")); |  1391                     BrowserDB.getCount(getContentResolver(), "readinglist")); | 
|  1391             Telemetry.HistogramAdd("BROWSER_IS_USER_DEFAULT", (isDefaultBrowser(
      ) ? 1 : 0)); |  1392             Telemetry.HistogramAdd("BROWSER_IS_USER_DEFAULT", (isDefaultBrowser(
      ) ? 1 : 0)); | 
|  1392         } else if ("Updater:Launch".equals(event)) { |  1393         } else if ("Updater:Launch".equals(event)) { | 
|  1393             handleUpdaterLaunch(); |  1394             handleUpdaterLaunch(); | 
|  1394  |  1395  | 
|  1395         } else if ("BrowserToolbar:Visibility".equals(event)) { |  1396         } else if ("BrowserToolbar:Visibility".equals(event)) { | 
|  1396             setBrowserToolbarVisible(message.getBoolean("visible")); |  1397             setBrowserToolbarVisible(message.getBoolean("visible")); | 
|  1397  |  | 
|  1398         } else if ("BlockAds:Update".equals(event)) { |  | 
|  1399             final Menu menu = mMenu; |  | 
|  1400             final boolean enabled = message.getBoolean("canBlockAds"); |  | 
|  1401             final boolean checked = message.getBoolean("blockAds"); |  | 
|  1402             ThreadUtils.postToUiThread(new Runnable() { |  | 
|  1403                     @Override |  | 
|  1404                     public void run() { |  | 
|  1405                         if (menu == null) |  | 
|  1406                             return; |  | 
|  1407                         final MenuItem blockAdsItem = menu.findItem(R.id.block_a
      ds); |  | 
|  1408                         blockAdsItem.setEnabled(enabled); |  | 
|  1409                         blockAdsItem.setChecked(checked); |  | 
|  1410                     } |  | 
|  1411                 }); |  | 
|  1412  |  | 
|  1413  |  1398  | 
|  1414         } else { |  1399         } else { | 
|  1415             super.handleMessage(event, message, callback); |  1400             super.handleMessage(event, message, callback); | 
|  1416         } |  1401         } | 
|  1417     } |  1402     } | 
|  1418  |  1403  | 
|  1419     /** |  1404     /** | 
|  1420      * Use a dummy Intent to do a default browser check. |  1405      * Use a dummy Intent to do a default browser check. | 
|  1421      * |  1406      * | 
|  1422      * @return true if this package is the default browser on this device, false
       otherwise. |  1407      * @return true if this package is the default browser on this device, false
       otherwise. | 
| (...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2292         } |  2277         } | 
|  2293  |  2278  | 
|  2294         return null; |  2279         return null; | 
|  2295     } |  2280     } | 
|  2296  |  2281  | 
|  2297     /** |  2282     /** | 
|  2298      * Add the provided item to the provided menu, which should be |  2283      * Add the provided item to the provided menu, which should be | 
|  2299      * the root (mMenu). |  2284      * the root (mMenu). | 
|  2300      */ |  2285      */ | 
|  2301     private void addAddonMenuItemToMenu(final Menu menu, final MenuItemInfo info
      ) { |  2286     private void addAddonMenuItemToMenu(final Menu menu, final MenuItemInfo info
      ) { | 
 |  2287         // Adblock Browser doesn't support add-ons, so the only menu item that | 
 |  2288         // could be added is the one for whitelisting the current domain added | 
 |  2289         // by ABP - Adblock Browser has its own item for that. | 
 |  2290         if (true) | 
 |  2291             return; | 
 |  2292  | 
|  2302         info.added = true; |  2293         info.added = true; | 
|  2303  |  2294  | 
|  2304         final Menu destination; |  2295         final Menu destination; | 
|  2305         if (info.parent == 0) { |  2296         if (info.parent == 0) { | 
|  2306             destination = menu; |  2297             destination = menu; | 
|  2307         } else if (info.parent == GECKO_TOOLS_MENU) { |  2298         } else if (info.parent == GECKO_TOOLS_MENU) { | 
|  2308             MenuItem tools = menu.findItem(R.id.tools); |  2299             MenuItem tools = menu.findItem(R.id.tools); | 
|  2309             destination = tools != null ? tools.getSubMenu() : menu; |  2300             destination = tools != null ? tools.getSubMenu() : menu; | 
|  2310         } else { |  2301         } else { | 
|  2311             MenuItem parent = menu.findItem(info.parent); |  2302             MenuItem parent = menu.findItem(info.parent); | 
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2451                 addAddonMenuItemToMenu(mMenu, item); |  2442                 addAddonMenuItemToMenu(mMenu, item); | 
|  2452             } |  2443             } | 
|  2453         } |  2444         } | 
|  2454  |  2445  | 
|  2455         // Action providers are available only ICS+. |  2446         // Action providers are available only ICS+. | 
|  2456         if (Versions.feature14Plus) { |  2447         if (Versions.feature14Plus) { | 
|  2457             GeckoMenuItem share = (GeckoMenuItem) mMenu.findItem(R.id.share); |  2448             GeckoMenuItem share = (GeckoMenuItem) mMenu.findItem(R.id.share); | 
|  2458             GeckoActionProvider provider = GeckoActionProvider.getForType(GeckoA
      ctionProvider.DEFAULT_MIME_TYPE, this); |  2449             GeckoActionProvider provider = GeckoActionProvider.getForType(GeckoA
      ctionProvider.DEFAULT_MIME_TYPE, this); | 
|  2459             share.setActionProvider(provider); |  2450             share.setActionProvider(provider); | 
|  2460         } |  2451         } | 
 |  2452  | 
 |  2453         org.adblockplus.browser.BrowserAppUtils.updateBlockAdsMenuItem( | 
 |  2454             mMenu.findItem(R.id.block_ads)); | 
|  2461  |  2455  | 
|  2462         return true; |  2456         return true; | 
|  2463     } |  2457     } | 
|  2464  |  2458  | 
|  2465     @Override |  2459     @Override | 
|  2466     public void openOptionsMenu() { |  2460     public void openOptionsMenu() { | 
|  2467         // Disable menu access (for hardware buttons) when the software menu but
      ton is inaccessible. |  2461         // Disable menu access (for hardware buttons) when the software menu but
      ton is inaccessible. | 
|  2468         if (mBrowserToolbar.isEditing()) { |  2462         if (mBrowserToolbar.isEditing()) { | 
|  2469             return; |  2463             return; | 
|  2470         } |  2464         } | 
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2795                 args.put("desktopMode", !item.isChecked()); |  2789                 args.put("desktopMode", !item.isChecked()); | 
|  2796                 args.put("tabId", selectedTab.getId()); |  2790                 args.put("tabId", selectedTab.getId()); | 
|  2797             } catch (JSONException e) { |  2791             } catch (JSONException e) { | 
|  2798                 Log.e(LOGTAG, "error building json arguments"); |  2792                 Log.e(LOGTAG, "error building json arguments"); | 
|  2799             } |  2793             } | 
|  2800             GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Desk
      topMode:Change", args.toString())); |  2794             GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Desk
      topMode:Change", args.toString())); | 
|  2801             return true; |  2795             return true; | 
|  2802         } |  2796         } | 
|  2803  |  2797  | 
|  2804         if (itemId == R.id.block_ads) { |  2798         if (itemId == R.id.block_ads) { | 
|  2805             Tab selectedTab = Tabs.getInstance().getSelectedTab(); |  2799             org.adblockplus.browser.BrowserAppUtils.updateCurrentTabWhitelisting
      (item); | 
|  2806             if (selectedTab == null) |  | 
|  2807                 return true; |  | 
|  2808             JSONObject args = new JSONObject(); |  | 
|  2809             try { |  | 
|  2810                 args.put("blockAds", !item.isChecked()); |  | 
|  2811                 args.put("url", selectedTab.getURL()); |  | 
|  2812             } catch (JSONException e) { |  | 
|  2813                 Log.e(LOGTAG, "error building json arguments"); |  | 
|  2814             } |  | 
|  2815             GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Bloc
      kAds:Change", args.toString())); |  | 
|  2816             return true; |  2800             return true; | 
|  2817         } |  2801         } | 
|  2818  |  2802  | 
|  2819         if (itemId == R.id.new_tab) { |  2803         if (itemId == R.id.new_tab) { | 
|  2820             addTab(); |  2804             addTab(); | 
|  2821             return true; |  2805             return true; | 
|  2822         } |  2806         } | 
|  2823  |  2807  | 
|  2824         if (itemId == R.id.new_private_tab) { |  2808         if (itemId == R.id.new_private_tab) { | 
|  2825             addPrivateTab(); |  2809             addPrivateTab(); | 
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3197                                                   final SessionInformation previ
      ousSession) { |  3181                                                   final SessionInformation previ
      ousSession) { | 
|  3198         return new BrowserHealthRecorder(context, |  3182         return new BrowserHealthRecorder(context, | 
|  3199                                          GeckoSharedPrefs.forApp(context), |  3183                                          GeckoSharedPrefs.forApp(context), | 
|  3200                                          profilePath, |  3184                                          profilePath, | 
|  3201                                          dispatcher, |  3185                                          dispatcher, | 
|  3202                                          osLocale, |  3186                                          osLocale, | 
|  3203                                          appLocale, |  3187                                          appLocale, | 
|  3204                                          previousSession); |  3188                                          previousSession); | 
|  3205     } |  3189     } | 
|  3206 } |  3190 } | 
| LEFT | RIGHT |