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:
Swaroop Rao 2017-01-28 16:26:13 -05:00
Родитель c6705b1fde
Коммит 7e12d23496
20 изменённых файлов: 45 добавлений и 72 удалений

Просмотреть файл

@ -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;