Remove our dependency on gsf.
Hardcode the account values when looking up the hosted domain. We also hardcode
the settings uri for looking up the client id. This is the better solution for
now because the client id is written only once. If the partner setup were to
write the value to the BrowserProvider, it would get erased if the user decided
to reset the Browser.
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index b550714..dd5579a 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -114,8 +114,6 @@
import com.android.common.Search;
import com.android.common.speech.LoggingEvents;
-import com.google.android.gsf.GoogleLoginServiceConstants;
-
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
@@ -157,13 +155,20 @@
private Account[] mAccountsGoogle;
private Account[] mAccountsPreferHosted;
+ // XXX: These constants should be exposed through some public api. Hardcode
+ // the values for now until some solution for gsf can be worked out.
+ // http://b/issue?id=2425179
+ private static final String ACCOUNT_TYPE = "com.google";
+ private static final String FEATURE_LEGACY_GOOGLE = "legacy_google";
+ private static final String FEATURE_LEGACY_HOSTED_OR_GOOGLE =
+ "legacy_hosted_or_google";
+
private void startReadOfGoogleAccounts() {
mAccountsGoogle = null;
mAccountsPreferHosted = null;
AccountManager.get(this).getAccountsByTypeAndFeatures(
- GoogleLoginServiceConstants.ACCOUNT_TYPE,
- new String[]{GoogleLoginServiceConstants.FEATURE_LEGACY_HOSTED_OR_GOOGLE},
+ ACCOUNT_TYPE, new String[]{ FEATURE_LEGACY_HOSTED_OR_GOOGLE },
this, null);
}
@@ -174,8 +179,7 @@
mAccountsGoogle = accountManagerFuture.getResult();
AccountManager.get(this).getAccountsByTypeAndFeatures(
- GoogleLoginServiceConstants.ACCOUNT_TYPE,
- new String[]{GoogleLoginServiceConstants.FEATURE_LEGACY_GOOGLE},
+ ACCOUNT_TYPE, new String[]{ FEATURE_LEGACY_GOOGLE },
this, null);
} else {
mAccountsPreferHosted = accountManagerFuture.getResult();
diff --git a/src/com/android/browser/BrowserProvider.java b/src/com/android/browser/BrowserProvider.java
index ca24b49..f22cf86 100644
--- a/src/com/android/browser/BrowserProvider.java
+++ b/src/com/android/browser/BrowserProvider.java
@@ -51,8 +51,6 @@
import com.android.common.Patterns;
-import com.google.android.gsf.GoogleSettingsContract.Partner;
-
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
@@ -181,13 +179,32 @@
public BrowserProvider() {
}
+ // XXX: This is a major hack to remove our dependency on gsf constants and
+ // its content provider. http://b/issue?id=2425179
+ static String getClientId(ContentResolver cr) {
+ String ret = "android-google";
+ Cursor c = null;
+ try {
+ c = cr.query(Uri.parse("content://com.google.settings/partner"),
+ new String[] { "value" }, "name='client_id'", null, null);
+ if (c != null && c.moveToNext()) {
+ ret = c.getString(0);
+ }
+ } catch (RuntimeException ex) {
+ // fall through to return the default
+ } finally {
+ if (c != null) {
+ c.close();
+ }
+ }
+ return ret;
+ }
private static CharSequence replaceSystemPropertyInString(Context context, CharSequence srcString) {
StringBuffer sb = new StringBuffer();
int lastCharLoc = 0;
- final String client_id = Partner.getString(context.getContentResolver(),
- Partner.CLIENT_ID, "android-google");
+ final String client_id = getClientId(context.getContentResolver());
for (int i = 0; i < srcString.length(); ++i) {
char c = srcString.charAt(i);
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 1e282c6..fbff0fa 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -17,8 +17,6 @@
package com.android.browser;
-import com.google.android.gsf.GoogleSettingsContract.Partner;
-
import android.app.ActivityManager;
import android.content.ContentResolver;
import android.content.Context;
@@ -578,8 +576,8 @@
private String getFactoryResetHomeUrl(Context context) {
String url = context.getResources().getString(R.string.homepage_base);
if (url.indexOf("{CID}") != -1) {
- url = url.replace("{CID}", Partner.getString(context
- .getContentResolver(), Partner.CLIENT_ID, "android-google"));
+ url = url.replace("{CID}",
+ BrowserProvider.getClientId(context.getContentResolver()));
}
return url;
}