mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 808813 - Part 2: Implement Firefox Account Android account type. r=rnewman
This commit is contained in:
parent
ebcf037bc2
commit
ffc0220e3d
@ -5,6 +5,7 @@
|
||||
# These files are managed in the android-sync repo. Do not modify directly, or your changes will be lost.
|
||||
SYNC_PP_JAVA_FILES := \
|
||||
background/common/GlobalConstants.java \
|
||||
fxa/FxAccountConstants.java \
|
||||
sync/SyncConstants.java \
|
||||
background/announcements/AnnouncementsConstants.java \
|
||||
background/healthreport/HealthReportConstants.java \
|
||||
@ -55,6 +56,14 @@ SYNC_JAVA_FILES := \
|
||||
background/healthreport/upload/ObsoleteDocumentTracker.java \
|
||||
background/healthreport/upload/SubmissionClient.java \
|
||||
background/healthreport/upload/SubmissionPolicy.java \
|
||||
fxa/authenticator/FxAccountAuthenticator.java \
|
||||
fxa/authenticator/FxAccountAuthenticatorService.java \
|
||||
fxa/sync/FxAccountBookmarksSyncService.java \
|
||||
fxa/sync/FxAccountHistorySyncService.java \
|
||||
fxa/sync/FxAccountPasswordsSyncService.java \
|
||||
fxa/sync/FxAccountSyncAdapter.java \
|
||||
fxa/sync/FxAccountSyncService.java \
|
||||
fxa/sync/FxAccountTabsSyncService.java \
|
||||
sync/AlreadySyncingException.java \
|
||||
sync/CollectionKeys.java \
|
||||
sync/CommandProcessor.java \
|
||||
@ -343,9 +352,14 @@ SYNC_RES_XML := \
|
||||
$(NULL)
|
||||
|
||||
SYNC_PP_RES_XML := \
|
||||
res/xml/sync_syncadapter.xml \
|
||||
res/xml/sync_options.xml \
|
||||
res/xml/sync_syncadapter.xml \
|
||||
res/xml/sync_authenticator.xml \
|
||||
res/xml/fxaccount_tabs_syncadapter.xml \
|
||||
res/xml/fxaccount_passwords_syncadapter.xml \
|
||||
res/xml/fxaccount_history_syncadapter.xml \
|
||||
res/xml/fxaccount_bookmarks_syncadapter.xml \
|
||||
res/xml/fxaccount_authenticator.xml \
|
||||
$(NULL)
|
||||
|
||||
SYNC_THIRDPARTY_JAVA_FILES := \
|
||||
|
11
mobile/android/base/fxa/FxAccountConstants.java.in
Normal file
11
mobile/android/base/fxa/FxAccountConstants.java.in
Normal file
@ -0,0 +1,11 @@
|
||||
#filter substitution
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa;
|
||||
|
||||
public class FxAccountConstants {
|
||||
public static final String GLOBAL_LOG_TAG = "FxAccounts";
|
||||
public static final String ACCOUNT_TYPE = "@MOZ_ANDROID_SHARED_FXACCOUNT_TYPE@";
|
||||
}
|
@ -0,0 +1,124 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.authenticator;
|
||||
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.background.common.log.Logger;
|
||||
import org.mozilla.gecko.fxa.FxAccountConstants;
|
||||
|
||||
import android.accounts.AbstractAccountAuthenticator;
|
||||
import android.accounts.Account;
|
||||
import android.accounts.AccountAuthenticatorResponse;
|
||||
import android.accounts.AccountManager;
|
||||
import android.accounts.NetworkErrorException;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class FxAccountAuthenticator extends AbstractAccountAuthenticator {
|
||||
public static final String LOG_TAG = FxAccountAuthenticator.class.getSimpleName();
|
||||
|
||||
protected final Context context;
|
||||
protected final AccountManager accountManager;
|
||||
|
||||
public FxAccountAuthenticator(Context context) {
|
||||
super(context);
|
||||
this.context = context;
|
||||
this.accountManager = AccountManager.get(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle addAccount(AccountAuthenticatorResponse response,
|
||||
String accountType, String authTokenType, String[] requiredFeatures,
|
||||
Bundle options)
|
||||
throws NetworkErrorException {
|
||||
Logger.debug(LOG_TAG, "addAccount");
|
||||
|
||||
final Bundle res = new Bundle();
|
||||
|
||||
if (!FxAccountConstants.ACCOUNT_TYPE.equals(accountType)) {
|
||||
res.putInt(AccountManager.KEY_ERROR_CODE, -1);
|
||||
res.putString(AccountManager.KEY_ERROR_MESSAGE, "Not adding unknown account type.");
|
||||
return res;
|
||||
}
|
||||
|
||||
final Account account = new Account("test@test.com", FxAccountConstants.ACCOUNT_TYPE);
|
||||
final String password = "password";
|
||||
final Bundle userData = Bundle.EMPTY;
|
||||
|
||||
if (!accountManager.addAccountExplicitly(account, password, userData)) {
|
||||
res.putInt(AccountManager.KEY_ERROR_CODE, -1);
|
||||
res.putString(AccountManager.KEY_ERROR_MESSAGE, "Failed to add account explicitly.");
|
||||
return res;
|
||||
}
|
||||
|
||||
Logger.info(LOG_TAG, "Added account named " + account.name + " of type " + account.type);
|
||||
|
||||
// Enable syncing by default.
|
||||
for (String authority : new String[] {
|
||||
AppConstants.ANDROID_PACKAGE_NAME + ".db.browser",
|
||||
AppConstants.ANDROID_PACKAGE_NAME + ".db.formhistory",
|
||||
AppConstants.ANDROID_PACKAGE_NAME + ".db.tabs",
|
||||
AppConstants.ANDROID_PACKAGE_NAME + ".db.passwords",
|
||||
}) {
|
||||
ContentResolver.setSyncAutomatically(account, authority, true);
|
||||
ContentResolver.setIsSyncable(account, authority, 1);
|
||||
}
|
||||
|
||||
res.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
|
||||
res.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account, Bundle options)
|
||||
throws NetworkErrorException {
|
||||
Logger.debug(LOG_TAG, "confirmCredentials");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
|
||||
Logger.debug(LOG_TAG, "editProperties");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle getAuthToken(final AccountAuthenticatorResponse response,
|
||||
final Account account, final String authTokenType, final Bundle options)
|
||||
throws NetworkErrorException {
|
||||
Logger.debug(LOG_TAG, "getAuthToken");
|
||||
|
||||
Logger.warn(LOG_TAG, "Returning null bundle for getAuthToken.");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthTokenLabel(String authTokenType) {
|
||||
Logger.debug(LOG_TAG, "getAuthTokenLabel");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle hasFeatures(AccountAuthenticatorResponse response,
|
||||
Account account, String[] features) throws NetworkErrorException {
|
||||
Logger.debug(LOG_TAG, "hasFeatures");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle updateCredentials(AccountAuthenticatorResponse response,
|
||||
Account account, String authTokenType, Bundle options)
|
||||
throws NetworkErrorException {
|
||||
Logger.debug(LOG_TAG, "updateCredentials");
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.authenticator;
|
||||
|
||||
import org.mozilla.gecko.background.common.log.Logger;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.os.IBinder;
|
||||
|
||||
public class FxAccountAuthenticatorService extends Service {
|
||||
public static final String LOG_TAG = FxAccountAuthenticatorService.class.getSimpleName();
|
||||
|
||||
// Lazily initialized by <code>getAuthenticator</code>.
|
||||
protected FxAccountAuthenticator accountAuthenticator = null;
|
||||
|
||||
protected FxAccountAuthenticator getAuthenticator() {
|
||||
if (accountAuthenticator == null) {
|
||||
accountAuthenticator = new FxAccountAuthenticator(this);
|
||||
}
|
||||
|
||||
return accountAuthenticator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
Logger.debug(LOG_TAG, "onCreate");
|
||||
|
||||
accountAuthenticator = getAuthenticator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
Logger.debug(LOG_TAG, "onBind");
|
||||
|
||||
if (intent.getAction().equals(android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT)) {
|
||||
return getAuthenticator().getIBinder();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.sync;
|
||||
|
||||
public class FxAccountBookmarksSyncService extends FxAccountSyncService {
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.sync;
|
||||
|
||||
public class FxAccountHistorySyncService extends FxAccountSyncService {
|
||||
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.sync;
|
||||
|
||||
public class FxAccountPasswordsSyncService extends FxAccountHistorySyncService {
|
||||
|
||||
}
|
30
mobile/android/base/fxa/sync/FxAccountSyncAdapter.java
Normal file
30
mobile/android/base/fxa/sync/FxAccountSyncAdapter.java
Normal file
@ -0,0 +1,30 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.sync;
|
||||
|
||||
import org.mozilla.gecko.background.common.log.Logger;
|
||||
|
||||
import android.accounts.Account;
|
||||
import android.content.AbstractThreadedSyncAdapter;
|
||||
import android.content.ContentProviderClient;
|
||||
import android.content.Context;
|
||||
import android.content.SyncResult;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class FxAccountSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||
private static final String LOG_TAG = FxAccountSyncAdapter.class.getSimpleName();
|
||||
|
||||
public FxAccountSyncAdapter(Context context, boolean autoInitialize) {
|
||||
super(context, autoInitialize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
|
||||
Logger.info(LOG_TAG, "Syncing FxAccount" +
|
||||
" account named " + account.name +
|
||||
" for authority " + authority +
|
||||
" with instance " + this + ".");
|
||||
}
|
||||
}
|
28
mobile/android/base/fxa/sync/FxAccountSyncService.java
Normal file
28
mobile/android/base/fxa/sync/FxAccountSyncService.java
Normal file
@ -0,0 +1,28 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.sync;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.os.IBinder;
|
||||
|
||||
public abstract class FxAccountSyncService extends Service {
|
||||
private static final Object syncAdapterLock = new Object();
|
||||
private static FxAccountSyncAdapter syncAdapter = null;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
synchronized (syncAdapterLock) {
|
||||
if (syncAdapter == null) {
|
||||
syncAdapter = new FxAccountSyncAdapter(getApplicationContext(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return syncAdapter.getSyncAdapterBinder();
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.fxa.sync;
|
||||
|
||||
public class FxAccountTabsSyncService extends FxAccountSyncService {
|
||||
|
||||
}
|
@ -7,6 +7,8 @@
|
||||
<!ENTITY syncBrand.fullName.label "Firefox Sync">
|
||||
<!ENTITY syncBrand.shortName.label "Sync">
|
||||
|
||||
<!ENTITY fxaccountBrand.fullName.label "Firefox Account">
|
||||
|
||||
<!-- Main titles. -->
|
||||
<!ENTITY sync.app.name.label '&syncBrand.fullName.label;'>
|
||||
<!ENTITY sync.title.connect.label 'Connect to &syncBrand.shortName.label;'>
|
||||
@ -104,3 +106,6 @@
|
||||
<!ENTITY sync.text.redirect.to.set.up.sync.label 'Set up &syncBrand.fullName.label; on your device to send tabs to other devices.'>
|
||||
<!ENTITY sync.text.tab.sent.label 'Your tab was sent!'>
|
||||
<!ENTITY sync.text.tab.not.sent.label 'There was a problem sending your tab.'>
|
||||
|
||||
<!-- Firefox Account strings -->
|
||||
<!ENTITY fxaccount.label '&fxaccountBrand.fullName.label;'>
|
||||
|
@ -0,0 +1,13 @@
|
||||
#filter substitution
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accountType="@MOZ_ANDROID_SHARED_FXACCOUNT_TYPE@"
|
||||
android:icon="@drawable/icon"
|
||||
android:smallIcon="@drawable/icon"
|
||||
android:label="@string/fxaccount_label"
|
||||
/>
|
@ -0,0 +1,13 @@
|
||||
#filter substitution
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accountType="@MOZ_ANDROID_SHARED_FXACCOUNT_TYPE@"
|
||||
android:contentAuthority="@ANDROID_PACKAGE_NAME@.db.browser"
|
||||
android:isAlwaysSyncable="true"
|
||||
android:supportsUploading="true"
|
||||
android:userVisible="true"
|
||||
/>
|
@ -0,0 +1,13 @@
|
||||
#filter substitution
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accountType="@MOZ_ANDROID_SHARED_FXACCOUNT_TYPE@"
|
||||
android:contentAuthority="@ANDROID_PACKAGE_NAME@.db.formhistory"
|
||||
android:isAlwaysSyncable="true"
|
||||
android:supportsUploading="true"
|
||||
android:userVisible="true"
|
||||
/>
|
@ -0,0 +1,13 @@
|
||||
#filter substitution
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accountType="@MOZ_ANDROID_SHARED_FXACCOUNT_TYPE@"
|
||||
android:contentAuthority="@ANDROID_PACKAGE_NAME@.db.passwords"
|
||||
android:isAlwaysSyncable="true"
|
||||
android:supportsUploading="true"
|
||||
android:userVisible="true"
|
||||
/>
|
@ -0,0 +1,13 @@
|
||||
#filter substitution
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:accountType="@MOZ_ANDROID_SHARED_FXACCOUNT_TYPE@"
|
||||
android:contentAuthority="@ANDROID_PACKAGE_NAME@.db.tabs"
|
||||
android:isAlwaysSyncable="true"
|
||||
android:supportsUploading="true"
|
||||
android:userVisible="true"
|
||||
/>
|
@ -42,6 +42,14 @@ background/healthreport/upload/HealthReportUploadStartReceiver.java
|
||||
background/healthreport/upload/ObsoleteDocumentTracker.java
|
||||
background/healthreport/upload/SubmissionClient.java
|
||||
background/healthreport/upload/SubmissionPolicy.java
|
||||
fxa/authenticator/FxAccountAuthenticator.java
|
||||
fxa/authenticator/FxAccountAuthenticatorService.java
|
||||
fxa/sync/FxAccountBookmarksSyncService.java
|
||||
fxa/sync/FxAccountHistorySyncService.java
|
||||
fxa/sync/FxAccountPasswordsSyncService.java
|
||||
fxa/sync/FxAccountSyncAdapter.java
|
||||
fxa/sync/FxAccountSyncService.java
|
||||
fxa/sync/FxAccountTabsSyncService.java
|
||||
sync/AlreadySyncingException.java
|
||||
sync/CollectionKeys.java
|
||||
sync/CommandProcessor.java
|
||||
|
@ -0,0 +1,9 @@
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
|
||||
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
@ -0,0 +1,55 @@
|
||||
<service
|
||||
android:exported="true"
|
||||
android:name="org.mozilla.gecko.fxa.authenticator.FxAccountAuthenticatorService" >
|
||||
<intent-filter >
|
||||
<action android:name="android.accounts.AccountAuthenticator" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.accounts.AccountAuthenticator"
|
||||
android:resource="@xml/fxaccount_authenticator" />
|
||||
</service>
|
||||
<service
|
||||
android:exported="false"
|
||||
android:name="org.mozilla.gecko.fxa.sync.FxAccountBookmarksSyncService" >
|
||||
<intent-filter >
|
||||
<action android:name="android.content.SyncAdapter" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.content.SyncAdapter"
|
||||
android:resource="@xml/fxaccount_bookmarks_syncadapter" />
|
||||
</service>
|
||||
<service
|
||||
android:exported="false"
|
||||
android:name="org.mozilla.gecko.fxa.sync.FxAccountHistorySyncService" >
|
||||
<intent-filter >
|
||||
<action android:name="android.content.SyncAdapter" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.content.SyncAdapter"
|
||||
android:resource="@xml/fxaccount_history_syncadapter" />
|
||||
</service>
|
||||
<service
|
||||
android:exported="false"
|
||||
android:name="org.mozilla.gecko.fxa.sync.FxAccountPasswordsSyncService" >
|
||||
<intent-filter >
|
||||
<action android:name="android.content.SyncAdapter" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.content.SyncAdapter"
|
||||
android:resource="@xml/fxaccount_passwords_syncadapter" />
|
||||
</service>
|
||||
<service
|
||||
android:exported="false"
|
||||
android:name="org.mozilla.gecko.fxa.sync.FxAccountTabsSyncService" >
|
||||
<intent-filter >
|
||||
<action android:name="android.content.SyncAdapter" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data
|
||||
android:name="android.content.SyncAdapter"
|
||||
android:resource="@xml/fxaccount_tabs_syncadapter" />
|
||||
</service>
|
@ -1,4 +1,5 @@
|
||||
background/common/GlobalConstants.java
|
||||
fxa/FxAccountConstants.java
|
||||
sync/SyncConstants.java
|
||||
background/announcements/AnnouncementsConstants.java
|
||||
background/healthreport/HealthReportConstants.java
|
||||
|
@ -97,3 +97,6 @@
|
||||
<string name="sync_text_redirect_to_set_up_sync">&sync.text.redirect.to.set.up.sync.label;</string>
|
||||
<string name="sync_text_tab_sent">&sync.text.tab.sent.label;</string>
|
||||
<string name="sync_text_tab_not_sent">&sync.text.tab.not.sent.label;</string>
|
||||
|
||||
<!-- Firefox Account strings -->
|
||||
<string name="fxaccount_label">&fxaccount.label;</string>
|
||||
|
Loading…
Reference in New Issue
Block a user