[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;