Bug 1417255 - Add espresso to Fennec. r?maliu draft
authorNevin Chen <cnevinchen@gmail.com>
Wed, 15 Nov 2017 07:22:34 +0800
changeset 715555 40430f5a09f6193d23c626217a7195072d6790d4
parent 708706 4b94da21a9e6171f9911ffad171af23c26e6227b
child 744816 3fbcac02458dce233f3d0b40bd1ab35cde61e11f
push id94184
push userbmo:cnevinchen@gmail.com
push dateThu, 04 Jan 2018 04:07:37 +0000
reviewersmaliu
bugs1417255
milestone59.0a1
Bug 1417255 - Add espresso to Fennec. r?maliu The purpose of this bug is to run Espresso in Fennec locally. An going on effort is to remove test dependency by 1. Inject IingResource in BrowserApp by switching implementation between espresso and other flavors. 2. Add "if" statement to check build flavor and then use proguard to strip dead code. This will make release APK smaller, and also isolate testing code with production code. MozReview-Commit-ID: 9WsX63oDWQN
build.gradle
mobile/android/app/build.gradle
mobile/android/app/src/androidTest/java/org/mozilla/gecko/EspressoBrowserAppTest.java
mobile/android/app/src/androidTest/java/org/mozilla/gecko/EspressoOnly.java
mobile/android/app/src/espresso/assets/pwa_test_site/images/icon.png
mobile/android/app/src/espresso/assets/pwa_test_site/index.html
mobile/android/app/src/espresso/assets/pwa_test_site/pwa.webmanifest
mobile/android/base/AppConstants.java.in
mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
mobile/android/base/java/org/mozilla/gecko/pwa/PwaUtils.java
mobile/android/base/java/org/mozilla/gecko/toolbar/BrowserToolbar.java
mobile/android/base/java/org/mozilla/gecko/toolbar/PageActionLayout.java
mobile/android/config/proguard/proguard-test.pro
mobile/android/tests/browser/robocop/moz.build
mobile/android/tests/browser/robocop/pwa_test_site/images/icon.png
mobile/android/tests/browser/robocop/pwa_test_site/index.html
mobile/android/tests/browser/robocop/pwa_test_site/pwa.webmanifest
testing/config/tooltool-manifests/linux64/hostutils.manifest
--- a/build.gradle
+++ b/build.gradle
@@ -10,16 +10,19 @@ def tryInt = { string ->
 
 allprojects {
     // Expose the per-object-directory configuration to all projects.
     ext {
         mozconfig = gradle.mozconfig
         topsrcdir = gradle.mozconfig.topsrcdir
         topobjdir = gradle.mozconfig.topobjdir
 
+        espressoVersion = '3.0.1'
+        androidTestVersion = '1.0.1'
+
         compileSdkVersion = tryInt(mozconfig.substs.ANDROID_COMPILE_SDK_VERSION)
         buildToolsVersion = tryInt(mozconfig.substs.ANDROID_BUILD_TOOLS_VERSION)
         targetSdkVersion = tryInt(mozconfig.substs.ANDROID_TARGET_SDK)
         minSdkVersion = tryInt(mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION)
         manifestPlaceholders = [
             ANDROID_PACKAGE_NAME: mozconfig.substs.ANDROID_PACKAGE_NAME,
             ANDROID_TARGET_SDK: mozconfig.substs.ANDROID_TARGET_SDK,
             MOZ_ANDROID_MIN_SDK_VERSION: mozconfig.substs.MOZ_ANDROID_MIN_SDK_VERSION,
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -58,16 +58,17 @@ android {
         // unfortunate side effect of Proguarding the instrumentation (Robocop) APK, but nothing
         // uses runtime inspection or class-loading with that APK, so it shouldn't be a problem.
         def configureMinifyClosure = {
             // Bug 1229269: we can't yet shrinkResources effectively.  Be sure
             // to use -stripped.ap_ after enabling this.
             // shrinkResources true
             minifyEnabled true
             proguardFile "${topsrcdir}/mobile/android/config/proguard/proguard.cfg"
+            testProguardFile "${topsrcdir}/mobile/android/config/proguard/proguard-test.pro"
         }
         release configureMinifyClosure
         if (mozconfig.substs.MOZILLA_OFFICIAL) {
             debug configureMinifyClosure
         }
     }
 
     // The "audience" flavour dimension distinguishes between _local_ builds (intended for
@@ -76,16 +77,25 @@ android {
     //
     // The "skin" flavor dimension distinguishes between different user interfaces.  We sometimes
     // want to develop significant new user interface pieces in-tree that don't ship (even in the
     // Nightly channel) while under development.  A new "skin" flavour allows us to develop such
     // pieces in Gradle without changing the mainline configuration.
     flavorDimensions "audience", "skin"
 
     productFlavors {
+        espresso{
+            dimension "audience"
+
+            testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
+            testInstrumentationRunnerArgument 'annotation', 'org.mozilla.gecko.EspressoOnly'
+            testOptions {
+                animationsDisabled = true
+            }
+        }
         // For API 21+ - with pre-dexing, this will be faster for local development.
         local {
             dimension "audience"
 
             // For pre-dexing, setting `minSdkVersion 21` allows the Android gradle plugin to
             // pre-DEX each module and produce an APK that can be tested on
             // Android Lollipop without time consuming DEX merging processes.
             minSdkVersion 21
@@ -205,16 +215,18 @@ android {
         }
 
         androidTest {
             java {
                 srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/src"
                 // Bug 1229149 tracks pushing this into a :services Gradle project.
                 srcDir "${topsrcdir}/mobile/android/services/src/androidTest/java"
                 srcDir "${topsrcdir}/mobile/android/tests/browser/junit3/src"
+                srcDir "${topsrcdir}/mobile/android/app/src/androidTest/java"
+
             }
             res {
                 srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/res"
             }
             assets {
                 srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/assets"
             }
         }
@@ -233,16 +245,18 @@ android {
 dependencies {
     compile "com.android.support:support-v4:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
     compile "com.android.support:appcompat-v7:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
     compile "com.android.support:cardview-v7:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
     compile "com.android.support:recyclerview-v7:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
     compile "com.android.support:design:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
     compile "com.android.support:customtabs:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
 
+    compile "com.android.support.test.espresso:espresso-idling-resource:$project.ext.espressoVersion"
+
     if (mozconfig.substs.MOZ_NATIVE_DEVICES) {
         compile "com.android.support:mediarouter-v7:${mozconfig.substs.ANDROID_SUPPORT_LIBRARY_VERSION}"
         compile "com.google.android.gms:play-services-basement:${mozconfig.substs.ANDROID_GOOGLE_PLAY_SERVICES_VERSION}"
         compile "com.google.android.gms:play-services-base:${mozconfig.substs.ANDROID_GOOGLE_PLAY_SERVICES_VERSION}"
         compile "com.google.android.gms:play-services-cast:${mozconfig.substs.ANDROID_GOOGLE_PLAY_SERVICES_VERSION}"
     }
 
     if (mozconfig.substs.MOZ_INSTALL_TRACKING) {
@@ -260,20 +274,38 @@ dependencies {
     // Include LeakCanary in most gradle based builds. LeakCanary adds about 5k methods, so we disable
     // it for the (non-proguarded, non-predex) localOld builds to allow space for other libraries.
     // Gradle based tests include the no-op version.  Mach based builds only include the no-op version
     // of this library.
     // It doesn't seem like there is a non-trivial way to be conditional on 'localOld', so instead we explicitly
     // define a version of leakcanary for every flavor:
     localCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta1'
     localOldCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
+    espressoCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
+
     officialCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
     officialCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
     testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
 
+    androidTestCompile ("com.android.support.test.espresso:espresso-core:$project.ext.espressoVersion"){
+        exclude module: 'support-annotations'
+        exclude module: 'support-v4'
+        exclude module: 'support-v13'
+        exclude module: 'recyclerview-v7'
+        exclude module: 'appcompat-v7'
+    }
+    androidTestCompile ("com.android.support.test:runner:$project.ext.androidTestVersion"){
+        exclude module: 'support-annotations'
+        exclude module: 'support-v4'
+        exclude module: 'support-v13'
+        exclude module: 'recyclerview-v7'
+        exclude module: 'appcompat-v7'
+    }
+
+
     // With a simple "compile", Gradle will always build these libraries in their default configuration
     // (i.e. release), so we need to explicitly forward our own build configuration here (bug 1385695).
     //
     // Official builds compile a hacked up app:Official..Debug, but need the
     // release versions of the dependencies, in order to not have debugging
     // information.  It's not yet possible to specify just officialDebug, so we
     // hack around it here.
     if (mozconfig.substs.MOZILLA_OFFICIAL) {
new file mode 100644
--- /dev/null
+++ b/mobile/android/app/src/androidTest/java/org/mozilla/gecko/EspressoBrowserAppTest.java
@@ -0,0 +1,84 @@
+package org.mozilla.gecko;
+
+import android.support.annotation.Keep;
+import android.support.test.espresso.IdlingRegistry;
+import android.support.test.espresso.idling.CountingIdlingResource;
+import android.support.test.espresso.matcher.ViewMatchers;
+import android.support.test.rule.ActivityTestRule;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.action.ViewActions.pressImeActionButton;
+import static android.support.test.espresso.action.ViewActions.replaceText;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withParent;
+import static android.support.test.espresso.matcher.ViewMatchers.withTagValue;
+import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.is;
+import static org.mozilla.gecko.toolbar.PageActionLayout.PageAction.UUID_PAGE_ACTION_PWA;
+
+@EspressoOnly
+@Keep
+@RunWith(AndroidJUnit4.class)
+public class EspressoBrowserAppTest {
+
+    private static final String PAGE_WEB = "https://pwa.rocks";
+    private static final String PAGE_LOCAL = "index.html";
+
+    @Rule
+    public ActivityTestRule<BrowserApp> activityRule = new ActivityTestRule(BrowserApp.class);
+    private CountingIdlingResource countingResource;
+    private String url = null;
+
+    @Before
+    public void setup() {
+        countingResource = new CountingIdlingResource("PWA");
+
+        url = adjustUrl(PAGE_LOCAL);
+        // To prove that the test fails, omit this call:
+        IdlingRegistry.getInstance().register(countingResource);
+    }
+
+    private String adjustUrl(String path) {
+        return "resource://android/assets/pwa_test_site/" + path;
+
+    }
+
+    @Test
+    public void loadUrl() {
+        // Enter url
+        onView(withId(R.id.url_bar_title_scroll_view)).perform(click());
+        onView(withId(R.id.url_edit_text)).perform(click(), replaceText(url), pressImeActionButton());
+
+        activityRule.getActivity().setIdlingResource(countingResource);
+        onView(withId(R.id.page_action_layout)).check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
+
+        onView(allOf(
+                withParent(withId(R.id.page_action_layout)),
+                withTagValue(is((Object) UUID_PAGE_ACTION_PWA))))
+                .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));
+
+    }
+
+    @After
+    public void clearPreferences() {
+        try {
+            // clearing app data
+            Runtime runtime = Runtime.getRuntime();
+            String packageName = activityRule.getActivity().getPackageName();
+            runtime.exec("pm clear " + packageName);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
new file mode 100644
--- /dev/null
+++ b/mobile/android/app/src/androidTest/java/org/mozilla/gecko/EspressoOnly.java
@@ -0,0 +1,17 @@
+package org.mozilla.gecko;
+
+
+import android.support.annotation.Keep;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+// https://medium.com/@satyajit/running-subset-of-espresso-tests-locally-and-gcloud-4713931da56
+//Needed to have annotations at a test level
+@Keep
+@Target({ ElementType.METHOD, ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface EspressoOnly {
+}
\ No newline at end of file
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5cf5c37e0ebc577a96453e0944181e3b3aec1ef4
GIT binary patch
literal 25413
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
A-T(jq
new file mode 100644
--- /dev/null
+++ b/mobile/android/app/src/espresso/assets/pwa_test_site/index.html
@@ -0,0 +1,11 @@
+
+<!DOCTYPE html><html lang="en">
+<head>
+	<title> test pwa</title>
+	<link rel="manifest" href="pwa.webmanifest">
+</head>
+<body>
+	TEST
+</body>
+</html>
+
new file mode 100644
--- /dev/null
+++ b/mobile/android/app/src/espresso/assets/pwa_test_site/pwa.webmanifest
@@ -0,0 +1,16 @@
+{
+	"short_name": "PWA TEST",
+	"name": "PWA TEST",
+	"display": "standalone",
+	"icons": [
+	
+		{
+			"src": "images/icon.png",
+			"sizes": "192x192",
+			"type": "image/png"
+		}
+	],
+	"start_url": ".",
+	"theme_color": "#64c639",
+	"background_color": "#3c3c3c"
+}
--- a/mobile/android/base/AppConstants.java.in
+++ b/mobile/android/base/AppConstants.java.in
@@ -329,9 +329,11 @@ public class AppConstants {
 //#endif
 
     public static final String MOZ_POCKET_API_KEY =
 //#ifdef MOZ_ANDROID_POCKET
         "@MOZ_POCKET_API_KEY@";
 //#else
         null;
 //#endif
+
+    public static final String MOZ_FLAVOR_ESPRESSO = "espresso";
 }
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -36,16 +36,18 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.StrictMode;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.StringRes;
 import android.support.annotation.UiThread;
 import android.support.design.widget.Snackbar;
+import android.support.test.espresso.IdlingResource;
+import android.support.test.espresso.idling.CountingIdlingResource;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.NotificationCompat;
 import android.support.v4.content.res.ResourcesCompat;
 import android.support.v4.view.MenuItemCompat;
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
@@ -267,16 +269,29 @@ public class BrowserApp extends GeckoApp
     public static final String TAB_HISTORY_FRAGMENT_TAG = "tabHistoryFragment";
 
     // When the static action bar is shown, only the real toolbar chrome should be
     // shown when the toolbar is visible. Causing the toolbar animator to also
     // show the snapshot causes the content to shift under the users finger.
     // See: Bug 1358554
     private boolean mShowingToolbarChromeForActionBar;
 
+    private CountingIdlingResource idlingResource;
+
+    public void setIdlingResource(CountingIdlingResource resource) {
+        idlingResource = resource;
+        idlingResource.increment();
+    }
+
+    public void donePWA() {
+        if (idlingResource != null) {
+            idlingResource.decrement();
+        }
+    }
+
     private static class MenuItemInfo {
         public int id;
         public String label;
         public boolean checkable;
         public boolean checked;
         public boolean enabled = true;
         public boolean visible = true;
         public int parent;
--- a/mobile/android/base/java/org/mozilla/gecko/pwa/PwaUtils.java
+++ b/mobile/android/base/java/org/mozilla/gecko/pwa/PwaUtils.java
@@ -1,16 +1,18 @@
 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
  * 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.pwa;
 
 import android.support.annotation.CheckResult;
 
+import org.mozilla.gecko.AppConstants;
+import org.mozilla.gecko.BuildConfig;
 import org.mozilla.gecko.Tab;
 
 
 public class PwaUtils {
     /**
      * Check if this tab should add as PWA shortcut
      * From the document :https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https
      * PWA must be served from a secure origin. We also restrict it to
@@ -21,11 +23,19 @@ public class PwaUtils {
      * @return true if the tab shouldAddPwaShortcut
      */
     @CheckResult
     public static boolean shouldAddPwaShortcut(Tab tab) {
         final boolean secure = tab.getSiteIdentity().isSecure();
         // This tab is safe for pwa only when the site is absolutely secure.
         // so no exception is allowed
         final boolean exception = tab.getSiteIdentity().isSecurityException();
-        return !tab.isPrivate() && secure && !exception;
+
+        // There's no https/mixed content check for espresso.... for now.
+        if (BuildConfig.FLAVOR.contains(AppConstants.MOZ_FLAVOR_ESPRESSO)) {
+            return !tab.isPrivate();
+        } else {
+            return !tab.isPrivate() && secure && !exception;
+        }
+
+
     }
 }
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/BrowserToolbar.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/BrowserToolbar.java
@@ -5,19 +5,23 @@
 
 package org.mozilla.gecko.toolbar;
 
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.List;
 
 import android.graphics.Rect;
+import android.os.Build;
 import android.support.annotation.Nullable;
 import android.support.v4.content.ContextCompat;
+
+import org.mozilla.gecko.AppConstants;
 import org.mozilla.gecko.BrowserApp;
+import org.mozilla.gecko.BuildConfig;
 import org.mozilla.gecko.Clipboard;
 import org.mozilla.gecko.GeckoSharedPrefs;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.TouchEventInterceptor;
@@ -543,16 +547,23 @@ public abstract class BrowserToolbar ext
         // The selected tab may be null if GeckoApp (and thus the
         // selected tab) are not yet initialized (bug 1090287).
         if (selectedTab != null) {
             updateProgressVisibility(selectedTab, selectedTab.getLoadProgress());
         }
     }
 
     private void updateProgressVisibility(Tab selectedTab, int progress) {
+        // https://problemcode.blogspot.com/2015/05/google-espresso-javalangruntimeexceptio.html
+        // I hide the progress bar for expresso test otherwise I'll get this error
+        // https://android.googlesource.com/platform/frameworks/testing/+/android-support-test/runner/src/main/java/android/support/test/runner/MonitoringInstrumentation.java#358
+        if (BuildConfig.FLAVOR.contains(AppConstants.MOZ_FLAVOR_ESPRESSO)) {
+            progressBar.setVisibility(View.GONE);
+            return;
+        }
         if (!isEditing() && selectedTab.getState() == Tab.STATE_LOADING) {
             progressBar.setProgress(progress);
             progressBar.setPrivateMode(selectedTab.isPrivate());
             progressBar.setVisibility(View.VISIBLE);
             progressBar.pinDynamicToolbar();
         } else {
             progressBar.setVisibility(View.GONE);
             progressBar.unpinDynamicToolbar();
--- a/mobile/android/base/java/org/mozilla/gecko/toolbar/PageActionLayout.java
+++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/PageActionLayout.java
@@ -1,15 +1,16 @@
 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
  * 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.toolbar;
 
+import org.mozilla.gecko.BrowserApp;
 import org.mozilla.gecko.EventDispatcher;
 import org.mozilla.gecko.GeckoSharedPrefs;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
 import org.mozilla.gecko.preferences.GeckoPreferences;
 import org.mozilla.gecko.pwa.PwaUtils;
 import org.mozilla.gecko.util.DrawableUtil;
@@ -153,20 +154,21 @@ public class PageActionLayout extends Th
                 @Override
                 public boolean onLongClick(String id) {
                     final GeckoBundle data = new GeckoBundle(1);
                     data.putString("id", id);
                     EventDispatcher.getInstance().dispatch("PageActions:LongClicked", data);
                     return true;
                 }
             }, important);
-
+            ((BrowserApp)getContext()).donePWA();
         } else if ("PageActions:Remove".equals(event)) {
             removePageAction(message.getString("id"));
         }
+
     }
 
     private void maybeShowPwaOnboarding(String id) {
         // only show pwa at normal mode
         final Tab selectedTab = Tabs.getInstance().getSelectedTab();
         if (!PwaUtils.shouldAddPwaShortcut(selectedTab)) {
             return;
         }
new file mode 100644
--- /dev/null
+++ b/mobile/android/config/proguard/proguard-test.pro
@@ -0,0 +1,35 @@
+# proguard-test.cfg:
+-include proguard.cfg
+
+-keepattributes SourceFile,LineNumberTable
+# ------------------- Nevin add -----
+
+#-ignorewarnings
+#-keep class org.kobjects.** { *; }
+#-keep class org.ksoap2.** { *; }
+#-keep class org.kxml2.** { *; }
+-keep class org.xmlpull.** { *; }
+-dontwarn org.xmlpull.**
+
+#-keep class javax.lang.model.element.Modifier
+
+-dontwarn com.squareup.javawriter.JavaWriter
+
+
+# ------------------- TEST DEPENDENCIES -------------------
+-dontwarn org.hamcrest.**
+-dontwarn android.test.**
+-dontwarn android.support.test.**
+
+-keep class org.hamcrest.** {
+   *;
+}
+
+-keep class org.junit.** { *; }
+-dontwarn org.junit.**
+
+-keep class junit.** { *; }
+-dontwarn junit.**
+
+-keep class sun.misc.** { *; }
+-dontwarn sun.misc.**
--- a/mobile/android/tests/browser/robocop/moz.build
+++ b/mobile/android/tests/browser/robocop/moz.build
@@ -25,16 +25,17 @@ TEST_HARNESS_FILES.testing.mochitest.tes
     '*.html',
     '*.jpg',
     '*.mp4',
     '*.ogg',
     '*.sjs',
     '*.swf',
     '*.webm',
     '*.xml',
+    'pwa_test_site/**', # The ** preserves directory structure.
     'reader_mode_pages/**', # The ** preserves directory structure.
     'robocop*.js',
     'test*.js',
 ]
 
 DEFINES['MOZ_ANDROID_SHARED_ID'] = CONFIG['MOZ_ANDROID_SHARED_ID']
 OBJDIR_PP_FILES.mobile.android.tests.browser.robocop += [
     'AndroidManifest.xml.in',
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5cf5c37e0ebc577a96453e0944181e3b3aec1ef4
GIT binary patch
literal 25413
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
A-T(jq
new file mode 100644
--- /dev/null
+++ b/mobile/android/tests/browser/robocop/pwa_test_site/index.html
@@ -0,0 +1,11 @@
+
+<!DOCTYPE html><html lang="en">
+<head>
+	<title> test pwa</title>
+	<link rel="manifest" href="pwa.webmanifest">
+</head>
+<body>
+	TEST
+</body>
+</html>
+
new file mode 100644
--- /dev/null
+++ b/mobile/android/tests/browser/robocop/pwa_test_site/pwa.webmanifest
@@ -0,0 +1,16 @@
+{
+	"short_name": "PWA TEST",
+	"name": "PWA TEST",
+	"display": "standalone",
+	"icons": [
+	
+		{
+			"src": "images/icon.png",
+			"sizes": "192x192",
+			"type": "image/png"
+		}
+	],
+	"start_url": ".",
+	"theme_color": "#64c639",
+	"background_color": "#3c3c3c"
+}
--- a/testing/config/tooltool-manifests/linux64/hostutils.manifest
+++ b/testing/config/tooltool-manifests/linux64/hostutils.manifest
@@ -1,10 +1,10 @@
 [
   {
-    "size": 72528696,
+    "size": 72112596,
     "visibility": "public",
-    "digest": "6a0ed81e1aa43ad9bb3ebbb32d259fbcb15d7f5bd0bac47471cb41fb29fe74c6ff8ab4559cecd9d4f15c68cf5ad2ed4a8e924e4f89638cb4e2edaa06b65e5527",
+    "digest": "4d3fe61dd8ad9ca09c72e677e8d2d5b7409988de32d6feb9fc55cb0a320a4835b6e2f384a68d2409e89e7a0d2f622bf3ceb9b707e01ad8afe1270ad0d1c9973c",
     "algorithm": "sha512",
-    "filename": "host-utils-58.0a1.en-US-linux-x86_64.tar.gz",
+    "filename": "host-utils-58.0a1.en-US.mac.tar.gz,
     "unpack": true
   }
 ]