Add support for managed profile configuration

- Add framework for reading and enforcing managed profile restrictions.
- Implement enforcement of search engine restriction.
- Add automated test for search engine restriction.

(cherry-picked from 4688934c52fa74e0c4280e4105e644f10221a8ed)

Change-Id: Ifb6018df584fedba42e86ab35d9bfa53b4d36ebe
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 5bb085c..b5db3af 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -32,6 +32,7 @@
 
 import com.android.browser.R;
 import com.android.browser.homepages.HomeProvider;
+import com.android.browser.mdm.SearchEngineRestriction;
 import com.android.browser.platformsupport.Browser;
 import com.android.browser.provider.BrowserProvider;
 import com.android.browser.search.SearchEngine;
@@ -701,6 +702,10 @@
     // -----------------------------
 
     public String getSearchEngineName() {
+        // The following is a NOP if the SEARCH_ENGINE restriction has already been created. Otherwise,
+        // it creates the restriction and if enabled it sets the <default_search_engine_value>.
+        SearchEngineRestriction.getInstance();
+
         String defaultSearchEngineValue = mContext.getString(R.string.default_search_engine_value);
         if (defaultSearchEngineValue == null) {
             defaultSearchEngineValue = SearchEngine.GOOGLE;