Browser: support DM to config browser homepage for cmcc

Allow DM app change the homepage during WAP Parameter configuration.

CRs-Fixed: 555884

Change-Id: Ifa8195c0df737f584c1daab7b6c3147b26babda5
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index dd0fb31..93edc61 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -47,6 +47,8 @@
     <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
     <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
+    <uses-permission android:name="com.android.browser.permission.READ_HOMEPAGE" />
+    <uses-permission android:name="com.android.browser.permission.WRITE_HOMEPAGE" />
 
     <application   android:name="Browser"
                    android:label="@string/application_name"
@@ -66,6 +68,9 @@
                   android:writePermission="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS">
             <path-permission android:path="/bookmarks/search_suggest_query"
                     android:readPermission="android.permission.GLOBAL_SEARCH" />
+            <path-permission android:path="/homepage"
+                    android:readPermission="com.android.browser.permission.READ_HOMEPAGE"
+                    android:writePermission="com.android.browser.permission.WRITE_HOMEPAGE" />
         </provider>
         <activity android:name="BrowserActivity"
                   android:label="@string/application_name"
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 36ad0ce..95b34e7 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -55,6 +55,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.browser.BrowserSettings;
 import com.android.browser.R;
 import com.android.browser.UrlUtils;
 import com.android.browser.widget.BookmarkThumbnailWidgetProvider;
@@ -150,6 +151,7 @@
     static final int THUMBNAILS = 10;
     static final int THUMBNAILS_ID = 11;
     static final int OMNIBOX_SUGGESTIONS = 20;
+    static final int HOMEPAGE = 60;
 
     static final int BOOKMARKS = 1000;
     static final int BOOKMARKS_ID = 1001;
@@ -230,6 +232,7 @@
         matcher.addURI(authority, "thumbnails", THUMBNAILS);
         matcher.addURI(authority, "thumbnails/#", THUMBNAILS_ID);
         matcher.addURI(authority, "omnibox_suggestions", OMNIBOX_SUGGESTIONS);
+        matcher.addURI(authority, "homepage", HOMEPAGE);
 
         // Legacy
         matcher.addURI(LEGACY_AUTHORITY, "searches", SEARCHES);
@@ -1216,6 +1219,19 @@
                 break;
             }
 
+            case HOMEPAGE: {
+                String homepage = BrowserSettings.getInstance().getHomePage();
+                Log.d(TAG,"get home page for DM");
+                if (null == homepage) {
+                    return null;
+                }
+                String arrColumns[] = {"homepage"};
+                String arrHomepage[] = {homepage};
+                MatrixCursor matrixCursor = new MatrixCursor(arrColumns, 1);
+                matrixCursor.addRow(arrHomepage);
+                return matrixCursor;
+            }
+
             default: {
                 throw new UnsupportedOperationException("Unknown URL " + uri.toString());
             }
@@ -1838,6 +1854,21 @@
                 break;
             }
 
+            case HOMEPAGE: {
+                if (null != values) {
+                    String homepage = values.getAsString("homepage");
+                    if (null != homepage) {
+                        if (BrowserSettings.getInstance() == null) {
+                            BrowserSettings.initialize(getContext());
+                        }
+                        BrowserSettings.getInstance().setHomePage(homepage);
+                        Log.d(TAG,"set home page for DM");
+                        return 1;
+                    }
+                }
+                return 0;
+            }
+
             default: {
                 throw new UnsupportedOperationException("Unknown update URI " + uri);
             }