[MDM] Fix for incognito mode menu item
The incognito restriction was correctly gating incognito tab creation when
attempted from the 'new tab' screen, but I had missed the incognito icon
at the top of the menu.
The fix was to modify the IncognitoRestriction class to manage a new type
of control (the menu icon) and to push the gating logic down into the
Controller class (where it really belongs anyway).
Change-Id: I5395f060502907fcc7d03826568af1802450ad1b
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 12b8b29..99a40fe 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -98,6 +98,7 @@
import com.android.browser.R;
import com.android.browser.IntentHandler.UrlData;
import com.android.browser.UI.ComboViews;
+import com.android.browser.mdm.IncognitoRestriction;
import com.android.browser.mdm.URLFilterRestriction;
import com.android.browser.mynavigation.AddMyNavigationPage;
import com.android.browser.mynavigation.MyNavigationUtil;
@@ -1930,6 +1931,10 @@
}
mCurrentMenuState = mMenuState;
mUi.onPrepareOptionsMenu(menu);
+
+ IncognitoRestriction.getInstance()
+ .registerControl(menu.findItem(R.id.incognito_menu_id)
+ .getIcon());
}
private void setMenuItemVisibility(Menu menu, int id,
@@ -3063,20 +3068,24 @@
private Tab createNewTab(boolean incognito, boolean setActive,
boolean useCurrent) {
Tab tab = null;
- if (mTabControl.canCreateNewTab()) {
- tab = mTabControl.createNewTab(incognito, !setActive);
- addTab(tab);
- if (setActive) {
- setActiveTab(tab);
- } else {
- tab.pause();
- }
+ if (IncognitoRestriction.getInstance().isEnabled() && incognito) {
+ Toast.makeText(getContext(), R.string.mdm_managed_alert, Toast.LENGTH_SHORT).show();
} else {
- if (useCurrent) {
- tab = mTabControl.getCurrentTab();
- reuseTab(tab, null);
+ if (mTabControl.canCreateNewTab()) {
+ tab = mTabControl.createNewTab(incognito, !setActive);
+ addTab(tab);
+ if (setActive) {
+ setActiveTab(tab);
+ } else {
+ tab.pause();
+ }
} else {
- mUi.showMaxTabsWarning();
+ if (useCurrent) {
+ tab = mTabControl.getCurrentTab();
+ reuseTab(tab, null);
+ } else {
+ mUi.showMaxTabsWarning();
+ }
}
}
return tab;