Add reader mode option in popup menu
Reader mode use the DOM distiller to load the distilled version of a webpage
Reader mode is disabled by default and will be available only with the use
of the command line flag "reader-mode"
Change-Id: Ide36057cae4e71b94e8118cc767f600cd610b82e
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 5563b62..5c6a9b8 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1952,6 +1952,11 @@
} else {
bookmark_icon.setChecked(false);
}
+
+ // update reader mode checkbox
+ MenuItem readerSwitcher = menu.findItem(R.id.reader_mode_menu_id);
+ readerSwitcher.setVisible(false);
+ readerSwitcher.setChecked(false);
}
@Override
@@ -1964,6 +1969,9 @@
boolean isLiveScheme = false;
boolean isPageFinished = false;
boolean isSavable = false;
+
+ boolean isDistillable = false;
+ boolean isDistilled = false;
resetMenuItems(menu);
if (tab != null) {
@@ -1973,6 +1981,9 @@
isLiveScheme = UrlUtils.isLiveScheme(tab.getWebView().getUrl());
isPageFinished = (tab.getPageFinishedStatus() || !tab.inPageLoad());
isSavable = tab.getWebView().isSavable();
+
+ isDistillable = tab.isDistillable();
+ isDistilled = tab.isDistilled();
}
final MenuItem forward = menu.findItem(R.id.forward_menu_id);
@@ -2001,11 +2012,19 @@
setMenuItemVisibility(menu, R.id.add_to_homescreen,
isLive && isLiveScheme && isPageFinished);
setMenuItemVisibility(menu, R.id.save_snapshot_menu_id,
- isLive && isLiveScheme && isPageFinished && isSavable);
+ isLive && ( isLiveScheme || isDistilled ) && isPageFinished && isSavable);
// history and snapshots item are the members of COMBO menu group,
// so if show history item, only make snapshots item invisible.
menu.findItem(R.id.snapshots_menu_id).setVisible(false);
+
+ // update reader mode checkbox
+ final MenuItem readerSwitcher = menu.findItem(R.id.reader_mode_menu_id);
+ // The reader mode checkbox is hidden only
+ // when the current page is neither distillable nor distilled
+ readerSwitcher.setVisible(isDistillable || isDistilled);
+ readerSwitcher.setChecked(isDistilled);
+
mUi.updateMenuState(tab, menu);
}
@@ -2154,6 +2173,10 @@
toggleUserAgent();
break;
+ case R.id.reader_mode_menu_id:
+ toggleReaderMode();
+ break;
+
case R.id.window_one_menu_id:
case R.id.window_two_menu_id:
case R.id.window_three_menu_id:
@@ -2294,6 +2317,17 @@
mSettings.toggleDesktopUseragent(web);
}
+ // This function calls the method in the webview to enable/disable
+ // the reader mode through the DOM distiller
+ public void toggleReaderMode() {
+ Tab t = mTabControl.getCurrentTab();
+ if (t.isDistilled()) {
+ closeTab(t);
+ } else if (t.isDistillable()) {
+ openTab(t.getDistilledUrl(), false, true, false, t);
+ }
+ }
+
@Override
public void findOnPage() {
getCurrentTopWebView().showFindDialog(null, true);