зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1328837 - Move 'Switchboard' code into our module/package. Refactored SwitchBoard component to pull it into the app module. r=sebastian
MozReview-Commit-ID: HfypfVFdPwP --HG-- rename : mobile/android/thirdparty/com/keepsafe/switchboard/AsyncConfigLoader.java => mobile/android/base/java/org/mozilla/gecko/switchboard/AsyncConfigLoader.java rename : mobile/android/thirdparty/com/keepsafe/switchboard/DeviceUuidFactory.java => mobile/android/base/java/org/mozilla/gecko/switchboard/DeviceUuidFactory.java rename : mobile/android/thirdparty/com/keepsafe/switchboard/Preferences.java => mobile/android/base/java/org/mozilla/gecko/switchboard/Preferences.java rename : mobile/android/thirdparty/com/keepsafe/switchboard/Switch.java => mobile/android/base/java/org/mozilla/gecko/switchboard/Switch.java rename : mobile/android/thirdparty/com/keepsafe/switchboard/SwitchBoard.java => mobile/android/base/java/org/mozilla/gecko/switchboard/SwitchBoard.java extra : rebase_source : 696e6169c616f7a7540d452b27318c9647f620ee
This commit is contained in:
Родитель
c6705b1fde
Коммит
7e12d23496
|
@ -56,8 +56,6 @@ import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
|
|||
import org.mozilla.gecko.home.HomePanelsManager;
|
||||
import org.mozilla.gecko.home.HomeScreen;
|
||||
import org.mozilla.gecko.home.SearchEngine;
|
||||
import org.mozilla.gecko.icons.IconCallback;
|
||||
import org.mozilla.gecko.icons.IconResponse;
|
||||
import org.mozilla.gecko.icons.Icons;
|
||||
import org.mozilla.gecko.javaaddons.JavaAddonManager;
|
||||
import org.mozilla.gecko.media.VideoPlayer;
|
||||
|
@ -77,7 +75,6 @@ import org.mozilla.gecko.reader.SavedReaderViewHelper;
|
|||
import org.mozilla.gecko.reader.ReaderModeUtils;
|
||||
import org.mozilla.gecko.reader.ReadingListHelper;
|
||||
import org.mozilla.gecko.restrictions.Restrictable;
|
||||
import org.mozilla.gecko.restrictions.RestrictedProfileConfiguration;
|
||||
import org.mozilla.gecko.restrictions.Restrictions;
|
||||
import org.mozilla.gecko.search.SearchEngineManager;
|
||||
import org.mozilla.gecko.sync.repositories.android.FennecTabsRepository;
|
||||
|
@ -101,7 +98,6 @@ import org.mozilla.gecko.updater.UpdateServiceHelper;
|
|||
import org.mozilla.gecko.util.ActivityUtils;
|
||||
import org.mozilla.gecko.util.Clipboard;
|
||||
import org.mozilla.gecko.util.ContextUtils;
|
||||
import org.mozilla.gecko.util.BundleEventListener;
|
||||
import org.mozilla.gecko.util.EventCallback;
|
||||
import org.mozilla.gecko.util.FloatUtils;
|
||||
import org.mozilla.gecko.util.GamepadUtils;
|
||||
|
@ -146,8 +142,6 @@ import android.support.v4.app.NotificationCompat;
|
|||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Base64;
|
||||
import android.util.Base64OutputStream;
|
||||
import android.util.Log;
|
||||
import android.view.InputDevice;
|
||||
import android.view.KeyEvent;
|
||||
|
@ -168,14 +162,13 @@ import android.widget.Button;
|
|||
import android.widget.ListView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.ViewFlipper;
|
||||
import com.keepsafe.switchboard.AsyncConfigLoader;
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.AsyncConfigLoader;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
import android.animation.Animator;
|
||||
import android.animation.ObjectAnimator;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
|
@ -184,7 +177,6 @@ import java.net.URLEncoder;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
|
|
@ -9,8 +9,8 @@ import android.content.Context;
|
|||
import android.util.Log;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.keepsafe.switchboard.Preferences;
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.Preferences;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
|
|
@ -8,14 +8,10 @@ package org.mozilla.gecko.activitystream;
|
|||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.Experiments;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
|
@ -24,7 +20,6 @@ import org.mozilla.gecko.util.StringUtils;
|
|||
import org.mozilla.gecko.util.publicsuffix.PublicSuffix;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class ActivityStream {
|
||||
|
|
|
@ -9,7 +9,7 @@ import android.content.Context;
|
|||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
|
|
@ -14,10 +14,9 @@ import android.support.annotation.Nullable;
|
|||
import android.support.v4.net.ConnectivityManagerCompat;
|
||||
import android.util.Log;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.GeckoProfile;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
import org.mozilla.gecko.db.BrowserDB;
|
||||
import org.mozilla.gecko.feeds.action.FeedAction;
|
||||
|
|
|
@ -11,7 +11,7 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.os.SystemClock;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import org.mozilla.gecko.db.BrowserDB;
|
||||
import org.mozilla.gecko.feeds.FeedAlarmReceiver;
|
||||
|
|
|
@ -15,7 +15,7 @@ import android.net.Uri;
|
|||
import android.support.v4.app.NotificationCompat;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
import org.mozilla.gecko.Locales;
|
||||
|
|
|
@ -9,7 +9,6 @@ import org.json.JSONArray;
|
|||
import org.mozilla.gecko.AboutPages;
|
||||
import org.mozilla.gecko.AdjustConstants;
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.AppConstants.Versions;
|
||||
import org.mozilla.gecko.BrowserApp;
|
||||
import org.mozilla.gecko.BrowserLocaleManager;
|
||||
import org.mozilla.gecko.DataReportingNotification;
|
||||
|
@ -17,7 +16,6 @@ import org.mozilla.gecko.DynamicToolbar;
|
|||
import org.mozilla.gecko.EventDispatcher;
|
||||
import org.mozilla.gecko.Experiments;
|
||||
import org.mozilla.gecko.GeckoActivityStatus;
|
||||
import org.mozilla.gecko.GeckoApp;
|
||||
import org.mozilla.gecko.GeckoAppShell;
|
||||
import org.mozilla.gecko.GeckoApplication;
|
||||
import org.mozilla.gecko.GeckoProfile;
|
||||
|
@ -31,7 +29,6 @@ import org.mozilla.gecko.Telemetry;
|
|||
import org.mozilla.gecko.TelemetryContract;
|
||||
import org.mozilla.gecko.TelemetryContract.Method;
|
||||
import org.mozilla.gecko.activitystream.ActivityStream;
|
||||
import org.mozilla.gecko.background.common.GlobalConstants;
|
||||
import org.mozilla.gecko.db.BrowserContract.SuggestedSites;
|
||||
import org.mozilla.gecko.feeds.FeedService;
|
||||
import org.mozilla.gecko.feeds.action.CheckForUpdatesAction;
|
||||
|
@ -48,7 +45,6 @@ import org.mozilla.gecko.util.EventCallback;
|
|||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
import org.mozilla.gecko.util.HardwareUtils;
|
||||
import org.mozilla.gecko.util.InputOptionsUtils;
|
||||
import org.mozilla.gecko.util.NativeJSObject;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
import org.mozilla.gecko.util.ViewUtil;
|
||||
|
||||
|
@ -81,16 +77,12 @@ import android.preference.TwoStatePreference;
|
|||
import android.support.design.widget.Snackbar;
|
||||
import android.support.design.widget.TextInputLayout;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v4.content.res.ResourcesCompat;
|
||||
import android.support.v4.text.TextUtilsCompat;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.text.Editable;
|
||||
import android.text.InputType;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
|
@ -99,7 +91,7 @@ import android.widget.LinearLayout;
|
|||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
|
@ -12,7 +12,7 @@ import android.os.Bundle;
|
|||
import android.support.annotation.CallSuper;
|
||||
import android.util.Log;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
|
|
@ -8,7 +8,7 @@ package org.mozilla.gecko.promotion;
|
|||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import org.mozilla.gecko.BrowserApp;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
package com.keepsafe.switchboard;
|
||||
package org.mozilla.gecko.switchboard;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
|
@ -21,10 +21,10 @@ import android.os.AsyncTask;
|
|||
|
||||
/**
|
||||
* An async loader to load user config in background thread based on internal generated UUID.
|
||||
*
|
||||
* Call <code>AsyncConfigLoader.execute()</code> to load SwitchBoard.loadConfig() with own ID.
|
||||
*
|
||||
* Call <code>AsyncConfigLoader.execute()</code> to load SwitchBoard.loadConfig() with own ID.
|
||||
* To use your custom UUID call <code>AsyncConfigLoader.execute(uuid)</code> with uuid being your unique user id
|
||||
* as a String
|
||||
* as a String
|
||||
*
|
||||
* @author Philipp Berner
|
||||
*
|
|
@ -13,7 +13,7 @@
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
package com.keepsafe.switchboard;
|
||||
package org.mozilla.gecko.switchboard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -22,7 +22,7 @@ import android.content.SharedPreferences;
|
|||
|
||||
/**
|
||||
* Generates a UUID and stores is persistent as in the apps shared preferences.
|
||||
*
|
||||
*
|
||||
* @author Philipp Berner
|
||||
*/
|
||||
public class DeviceUuidFactory {
|
|
@ -13,7 +13,7 @@
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
package com.keepsafe.switchboard;
|
||||
package org.mozilla.gecko.switchboard;
|
||||
|
||||
|
||||
import android.content.Context;
|
|
@ -13,7 +13,7 @@
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
package com.keepsafe.switchboard;
|
||||
package org.mozilla.gecko.switchboard;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
|
@ -21,7 +21,7 @@ import android.content.Context;
|
|||
|
||||
/**
|
||||
* Single instance of an existing experiment for easier and cleaner code.
|
||||
*
|
||||
*
|
||||
* @author Philipp Berner
|
||||
*
|
||||
*/
|
||||
|
@ -64,7 +64,7 @@ public class Switch {
|
|||
* @return Values in JSONObject or null if non
|
||||
*/
|
||||
public JSONObject getValues() {
|
||||
if(hasValues())
|
||||
if (hasValues())
|
||||
return SwitchBoard.getExperimentValuesFromJson(context, experimentName);
|
||||
else
|
||||
return null;
|
|
@ -13,7 +13,7 @@
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
package com.keepsafe.switchboard;
|
||||
package org.mozilla.gecko.switchboard;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
|
@ -23,7 +23,6 @@ import java.net.HttpURLConnection;
|
|||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.MissingResourceException;
|
||||
|
@ -43,18 +42,18 @@ import android.util.Log;
|
|||
|
||||
/**
|
||||
* SwitchBoard is the core class of the KeepSafe Switchboard mobile A/B testing framework.
|
||||
* This class provides a bunch of static methods that can be used in your app to run A/B tests.
|
||||
*
|
||||
* The SwitchBoard supports production and staging environment.
|
||||
*
|
||||
* This class provides a bunch of static methods that can be used in your app to run A/B tests.
|
||||
*
|
||||
* The SwitchBoard supports production and staging environment.
|
||||
*
|
||||
* For usage <code>initDefaultServerUrls</code> for first time usage. Server URLs can be updates from
|
||||
* a remote location with <code>initConfigServerUrl</code>.
|
||||
*
|
||||
* To run a experiment use <code>isInExperiment()</code>. The experiment name has to match the one you
|
||||
*
|
||||
* To run a experiment use <code>isInExperiment()</code>. The experiment name has to match the one you
|
||||
* setup on the server.
|
||||
* All functions are design to be safe for programming mistakes and network connection issues. If the
|
||||
* All functions are design to be safe for programming mistakes and network connection issues. If the
|
||||
* experiment does not exists it will return false and pretend the user is not part of it.
|
||||
*
|
||||
*
|
||||
* @author Philipp Berner
|
||||
*
|
||||
*/
|
||||
|
@ -223,7 +222,7 @@ public class SwitchBoard {
|
|||
if (!country.matches(matchKeys.getString(KEY_COUNTRY))) {
|
||||
return false;
|
||||
}
|
||||
} catch (MissingResourceException|JSONException e) {
|
||||
} catch (MissingResourceException | JSONException e) {
|
||||
Log.e(TAG, "Exception matching country", e);
|
||||
}
|
||||
}
|
||||
|
@ -245,7 +244,7 @@ public class SwitchBoard {
|
|||
if (!lang.matches(matchKeys.getString(KEY_LANG))) {
|
||||
return false;
|
||||
}
|
||||
} catch (MissingResourceException|JSONException e) {
|
||||
} catch (MissingResourceException | JSONException e) {
|
||||
Log.e(TAG, "Exception matching lang", e);
|
||||
}
|
||||
}
|
||||
|
@ -266,7 +265,7 @@ public class SwitchBoard {
|
|||
if (!version.matches(matchKeys.getString(KEY_VERSION))) {
|
||||
return false;
|
||||
}
|
||||
} catch (NameNotFoundException|JSONException e) {
|
||||
} catch (NameNotFoundException | JSONException e) {
|
||||
Log.e(TAG, "Exception matching version", e);
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@
|
|||
package org.mozilla.gecko.tabs;
|
||||
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import org.mozilla.gecko.AppConstants.Versions;
|
||||
|
||||
import org.mozilla.gecko.Experiments;
|
||||
import org.mozilla.gecko.GeckoApp;
|
||||
import org.mozilla.gecko.GeckoApplication;
|
||||
|
@ -44,7 +44,7 @@ import android.widget.ImageButton;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
import org.mozilla.gecko.widget.themed.ThemedImageButton;
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ import android.view.View;
|
|||
import android.widget.Button;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
|
||||
/**
|
||||
* {@code ToolbarDisplayLayout} is the UI for when the toolbar is in
|
||||
|
|
|
@ -5,13 +5,10 @@
|
|||
|
||||
package org.mozilla.gecko.updater;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.AssetManager;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.Log;
|
||||
|
||||
import com.keepsafe.switchboard.SwitchBoard;
|
||||
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.BrowserApp;
|
||||
import org.mozilla.gecko.delegates.BrowserAppDelegateWithReference;
|
||||
|
@ -21,14 +18,10 @@ import org.mozilla.gecko.util.IOUtils;
|
|||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Enumeration;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
|
||||
/**
|
||||
* Perform tasks in the background after the app has been installed/updated.
|
||||
|
|
|
@ -702,6 +702,11 @@ gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
|||
'SiteIdentity.java',
|
||||
'SnackbarBuilder.java',
|
||||
'SuggestClient.java',
|
||||
'switchboard/AsyncConfigLoader.java',
|
||||
'switchboard/DeviceUuidFactory.java',
|
||||
'switchboard/Preferences.java',
|
||||
'switchboard/Switch.java',
|
||||
'switchboard/SwitchBoard.java',
|
||||
'Tab.java',
|
||||
'tabqueue/TabQueueHelper.java',
|
||||
'tabqueue/TabQueuePrompt.java',
|
||||
|
@ -988,11 +993,6 @@ gtjar.sources += [ thirdparty_source_dir + f for f in [
|
|||
'com/jakewharton/disklrucache/DiskLruCache.java',
|
||||
'com/jakewharton/disklrucache/StrictLineReader.java',
|
||||
'com/jakewharton/disklrucache/Util.java',
|
||||
'com/keepsafe/switchboard/AsyncConfigLoader.java',
|
||||
'com/keepsafe/switchboard/DeviceUuidFactory.java',
|
||||
'com/keepsafe/switchboard/Preferences.java',
|
||||
'com/keepsafe/switchboard/Switch.java',
|
||||
'com/keepsafe/switchboard/SwitchBoard.java',
|
||||
'com/squareup/leakcanary/LeakCanary.java',
|
||||
'com/squareup/leakcanary/RefWatcher.java',
|
||||
'com/squareup/picasso/Action.java',
|
||||
|
|
|
@ -9,6 +9,9 @@ import org.junit.Test;
|
|||
import org.junit.runner.RunWith;
|
||||
import org.mozilla.gecko.background.testhelpers.TestRunner;
|
||||
import org.mozilla.gecko.Experiments;
|
||||
import org.mozilla.gecko.switchboard.DeviceUuidFactory;
|
||||
import org.mozilla.gecko.switchboard.Preferences;
|
||||
import org.mozilla.gecko.switchboard.SwitchBoard;
|
||||
import org.mozilla.gecko.util.IOUtils;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче