Bug 1217174 - Part 2: Created NoAccountsDialog Activity and send url parameter to about:accounts with the webpage the user wanted to send. r?mcomella draft
authorAlex Johnson <me@alex-johnson.net>
Wed, 06 Jan 2016 19:40:16 -0500
changeset 323719 eb0b31ee7021ad71df2088aad6e9835531f5e089
parent 323717 1490ff04f60f51c51b404e196d5ed53b83c5e95f
child 513271 0a505055c20caba1566e6d9c4ae0fce0800759b4
push id9783
push userme@alex-johnson.net
push dateThu, 21 Jan 2016 03:09:38 +0000
reviewersmcomella
bugs1217174
milestone46.0a1
Bug 1217174 - Part 2: Created NoAccountsDialog Activity and send url parameter to about:accounts with the webpage the user wanted to send. r?mcomella
mobile/android/base/AndroidManifest.xml.in
mobile/android/base/java/org/mozilla/gecko/overlays/ui/NoAccountsDialog.java
mobile/android/base/java/org/mozilla/gecko/overlays/ui/ShareDialog.java
mobile/android/base/locales/en-US/android_strings.dtd
mobile/android/base/moz.build
mobile/android/base/resources/drawable-hdpi/mobile_to_pc.png
mobile/android/base/resources/drawable-hdpi/pc_to_mobile.png
mobile/android/base/resources/drawable-xhdpi/mobile_to_pc.png
mobile/android/base/resources/drawable-xhdpi/pc_to_mobile.png
mobile/android/base/resources/drawable-xxhdpi/mobile_to_pc.png
mobile/android/base/resources/drawable-xxhdpi/pc_to_mobile.png
mobile/android/base/resources/layout/overlay.xml
mobile/android/base/resources/values/styles.xml
mobile/android/base/strings.xml.in
mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FxAccountConstants.java
mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountWebFlowActivity.java
--- a/mobile/android/base/AndroidManifest.xml.in
+++ b/mobile/android/base/AndroidManifest.xml.in
@@ -222,16 +222,20 @@
              before the rest of the plumbing is in place -->
 
         <service android:name="org.mozilla.gecko.tabqueue.TabQueueService" />
 
         <activity android:name="org.mozilla.gecko.tabqueue.TabQueuePrompt"
                   android:launchMode="singleTop"
                   android:theme="@style/OverlayActivity" />
 
+        <activity android:name="org.mozilla.gecko.overlays.ui.NoAccountsDialog"
+                                  android:launchMode="singleTop"
+                                  android:theme="@style/OverlayActivity" />
+
         <activity android:name="org.mozilla.gecko.tabqueue.TabQueueDispatcher"
                   android:label="@MOZ_APP_DISPLAYNAME@"
                   android:launchMode="singleTask"
                   android:excludeFromRecents="true"
                   android:taskAffinity="@ANDROID_PACKAGE_NAME@.TABQUEUE"
                   android:theme="@style/TabQueueActivity">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/overlays/ui/NoAccountsDialog.java
@@ -0,0 +1,141 @@
+/* -*- 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.overlays.ui;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.animation.Animation;
+import android.view.animation.AnimationSet;
+import android.view.animation.AnimationUtils;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import org.mozilla.gecko.Locales;
+import org.mozilla.gecko.R;
+import org.mozilla.gecko.fxa.FxAccountConstants;
+import org.mozilla.gecko.fxa.activities.FxAccountWebFlowActivity;
+
+public class NoAccountsDialog extends Locales.LocaleAwareActivity {
+
+    public final static String EXTRA_FROM_URL = "fromurl";
+    private boolean isAnimating;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.overlay);
+        ((ImageView)findViewById(R.id.image)).setImageResource(R.drawable.mobile_to_pc);
+        ((TextView)findViewById(R.id.title)).setText(R.string.overlay_want_to_send);
+        ((TextView)findViewById(R.id.subtitle)).setText(R.string.send_to_any_other_devices);
+        ((TextView)findViewById(R.id.hint)).setText(R.string.overlay_no_account_hint);
+
+        Button signinButton = (Button) findViewById(R.id.button);
+        signinButton.setText(R.string.firstrun_welcome_button_account);
+
+        signinButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                final Intent fxAccountWebIntent = new Intent(FxAccountConstants.ACTION_FXA_GET_STARTED);
+                fxAccountWebIntent.putExtra(FxAccountWebFlowActivity.EXTRA_ENDPOINT, FxAccountConstants.ENDPOINT_SHAREPLANE);
+                Bundle extras = getIntent().getExtras();
+                fxAccountWebIntent.putExtra(FxAccountWebFlowActivity.EXTRA_FROM_URL, extras.getString(EXTRA_FROM_URL));
+                fxAccountWebIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                fxAccountWebIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
+                startActivityForResult(fxAccountWebIntent, 2);
+                cancelShare();
+                finish();
+            }
+        });
+    }
+
+    @Override
+    public void onBackPressed() {
+        cancelShare();
+        animateOut(false);
+    }
+
+    @Override
+    public boolean onTouchEvent(MotionEvent event) {
+        cancelShare();
+        animateOut(false);
+        return true;
+    }
+
+    /**
+     * Slide the overlay down off the screen, display
+     * a check (if given), and finish the activity.
+     */
+    // // TODO: Bug 1238830
+    private void animateOut(final boolean shouldDisplayConfirmation) {
+        if (isAnimating) {
+            return;
+        }
+
+        isAnimating = true;
+        final Animation slideOutAnim = AnimationUtils.loadAnimation(this, R.anim.overlay_slide_down);
+
+        final Animation animationToFinishActivity;
+        if (!shouldDisplayConfirmation) {
+            animationToFinishActivity = slideOutAnim;
+        } else {
+            final View check = findViewById(R.id.check);
+            check.setVisibility(View.VISIBLE);
+            final Animation checkEntryAnim = AnimationUtils.loadAnimation(this, R.anim.overlay_check_entry);
+            final Animation checkExitAnim = AnimationUtils.loadAnimation(this, R.anim.overlay_check_exit);
+            checkExitAnim.setStartOffset(checkEntryAnim.getDuration() + 500);
+
+            final AnimationSet checkAnimationSet = new AnimationSet(this, null);
+            checkAnimationSet.addAnimation(checkEntryAnim);
+            checkAnimationSet.addAnimation(checkExitAnim);
+
+            check.startAnimation(checkAnimationSet);
+            animationToFinishActivity = checkExitAnim;
+        }
+
+        findViewById(R.id.overlay).startAnimation(slideOutAnim);
+        animationToFinishActivity.setAnimationListener(new Animation.AnimationListener() {
+            @Override
+            public void onAnimationStart(Animation animation) { /* Unused. */ }
+
+            @Override
+            public void onAnimationEnd(Animation animation) {
+                finish();
+            }
+
+            @Override
+            public void onAnimationRepeat(Animation animation) { /* Unused. */ }
+        });
+
+        // Allows the user to dismiss the animation early.
+        setFullscreenFinishOnClickListener();
+    }
+
+    /**
+     * Sets a fullscreen {@link #finish()} click listener. We do this rather than attaching an
+     * onClickListener to the root View because in that case, we need to remove all of the
+     * existing listeners, which is less robust.
+     */
+    private void setFullscreenFinishOnClickListener() {
+        final View clickTarget = findViewById(R.id.fullscreen_click_target);
+        clickTarget.setVisibility(View.VISIBLE);
+        clickTarget.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                cancelShare();
+                finish();
+            }
+        });
+    }
+
+    private void cancelShare() {
+        Intent returnIntent = new Intent();
+        setResult(Activity.RESULT_CANCELED, returnIntent);
+    }
+}
--- a/mobile/android/base/java/org/mozilla/gecko/overlays/ui/ShareDialog.java
+++ b/mobile/android/base/java/org/mozilla/gecko/overlays/ui/ShareDialog.java
@@ -10,25 +10,27 @@ import java.net.URISyntaxException;
 import org.mozilla.gecko.AppConstants;
 import org.mozilla.gecko.GeckoProfile;
 import org.mozilla.gecko.Locales;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.db.LocalBrowserDB;
 import org.mozilla.gecko.db.RemoteClient;
+import org.mozilla.gecko.fxa.FirefoxAccounts;
 import org.mozilla.gecko.overlays.OverlayConstants;
 import org.mozilla.gecko.overlays.service.OverlayActionService;
 import org.mozilla.gecko.overlays.service.sharemethods.SendTab;
 import org.mozilla.gecko.overlays.service.sharemethods.ShareMethod;
 import org.mozilla.gecko.sync.setup.activities.WebURLFinder;
 import org.mozilla.gecko.mozglue.ContextUtils;
 import org.mozilla.gecko.util.ThreadUtils;
 import org.mozilla.gecko.util.UIAsyncTask;
 
+import android.app.Activity;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.Parcelable;
@@ -48,16 +50,18 @@ import android.widget.Toast;
  */
 public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabTargetSelectedListener {
 
     private enum State {
         DEFAULT,
         DEVICES_ONLY // Only display the device list.
     }
 
+    private static final int NOACCOUTRESULT = 0;
+
     private static final String LOGTAG = "GeckoShareDialog";
 
     /** Flag to indicate that we should always show the device list; specific to this release channel. **/
     public static final String INTENT_EXTRA_DEVICES_ONLY =
             AppConstants.ANDROID_PACKAGE_NAME + ".intent.extra.DEVICES_ONLY";
 
     /** The maximum number of devices we'll show in the dialog when in State.DEFAULT. **/
     private static final int MAXIMUM_INLINE_DEVICES = 2;
@@ -90,24 +94,20 @@ public class ShareDialog extends Locales
                     handleSendTabUIEvent(intent);
                     break;
                 default:
                     throw new IllegalArgumentException("UIEvent broadcast from ShareMethod that isn't thought to support such broadcasts.");
             }
         }
     };
 
-    /**
-     * Called when a UI event broadcast is received from the SendTab ShareMethod.
-     */
-    protected void handleSendTabUIEvent(Intent intent) {
+    private void showSendTabList(Intent intent) {
         sendTabOverrideIntent = intent.getParcelableExtra(SendTab.OVERRIDE_INTENT);
 
         RemoteClient[] remoteClientRecords = (RemoteClient[]) intent.getParcelableArrayExtra(SendTab.EXTRA_REMOTE_CLIENT_RECORDS);
-
         // Escape hatch: we don't show the option to open this dialog in this state so this should
         // never be run. However, due to potential inconsistencies in synced client state
         // (e.g. bug 1122302 comment 47), we might fail.
         if (state == State.DEVICES_ONLY &&
                 (remoteClientRecords == null || remoteClientRecords.length == 0)) {
             Log.e(LOGTAG, "In state: " + State.DEVICES_ONLY + " and received 0 synced clients. Finishing...");
             Toast.makeText(this, getResources().getText(R.string.overlay_no_synced_devices), Toast.LENGTH_SHORT)
                  .show();
@@ -134,16 +134,38 @@ public class ShareDialog extends Locales
             }
             return;
         }
 
         // Just show a button to launch the list of devices to choose from.
         sendTabList.switchState(SendTabList.State.SHOW_DEVICES);
     }
 
+    /**
+     * Called when a UI event broadcast is received from the SendTab ShareMethod.
+     */
+    protected void handleSendTabUIEvent(Intent intent) {
+        if (!FirefoxAccounts.firefoxAccountsExist(this)) {
+            Intent noAccountIntent = new Intent(this.getApplicationContext(), NoAccountsDialog.class);
+            noAccountIntent.putExtra(NoAccountsDialog.EXTRA_FROM_URL, url);
+            this.startActivityForResult(noAccountIntent, NOACCOUTRESULT);
+            return;
+        }
+        showSendTabList(intent);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == NOACCOUTRESULT) {
+            if (resultCode == Activity.RESULT_CANCELED) {
+                finish();
+            }
+        }
+    }
+
     @Override
     protected void onDestroy() {
         // Remove the listener when the activity is destroyed: we no longer care.
         // Note: The activity can be destroyed without onDestroy being called. However, this occurs
         // only when the application is killed, something which also kills the registered receiver
         // list, and the service, and everything else: so we don't care.
         LocalBroadcastManager.getInstance(this).unregisterReceiver(uiEventListener);
 
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -136,16 +136,21 @@
      to. -->
 <!ENTITY overlay_share_send_tab_btn_label "Send to another device">
 <!ENTITY overlay_share_no_url "No link found in this share">
 <!ENTITY overlay_share_select_device "Select device">
 <!-- Localization note (overlay_no_synced_devices) : Used when the menu option
      to send a tab to a synced device is pressed and no other synced devices
      are found. -->
 <!ENTITY overlay_no_synced_devices "No Firefox Account connected devices found">
+<!-- Localization note: The following strings show in the no accounts dialog when
+     user tries to send tab to another device and no account is found.-->
+<!ENTITY overlay_want_to_send "Want to send this tab?">
+<!ENTITY send_to_any_other_devices "Send this tab to any of your other Firefox devices.">
+<!ENTITY overlay_no_account_hint "You\'ll need to connect two devices.">
 
 <!ENTITY pref_category_search3 "Search">
 <!ENTITY pref_category_search_summary "Customize your search providers">
 <!ENTITY pref_category_accessibility "Accessibility">
 <!ENTITY pref_category_accessibility_summary2 "Text size, zoom, voice input">
 <!ENTITY pref_category_privacy_short "Privacy">
 <!ENTITY pref_category_privacy_summary3 "Tracking, cookies, data choices">
 <!ENTITY pref_category_vendor2 "&vendorShortName; &brandShortName;">
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -444,16 +444,17 @@ gbjar.sources += ['java/org/mozilla/geck
     'OrderedBroadcastHelper.java',
     'overlays/OverlayConstants.java',
     'overlays/service/OverlayActionService.java',
     'overlays/service/ShareData.java',
     'overlays/service/sharemethods/AddBookmark.java',
     'overlays/service/sharemethods/AddToReadingList.java',
     'overlays/service/sharemethods/SendTab.java',
     'overlays/service/sharemethods/ShareMethod.java',
+    'overlays/ui/NoAccountsDialog.java',
     'overlays/ui/OverlayDialogButton.java',
     'overlays/ui/SendTabDeviceListArrayAdapter.java',
     'overlays/ui/SendTabList.java',
     'overlays/ui/SendTabTargetSelectedListener.java',
     'overlays/ui/ShareDialog.java',
     'permissions/PermissionBlock.java',
     'permissions/Permissions.java',
     'permissions/PermissionsHelper.java',
new file mode 100644
index 0000000000000000000000000000000000000000..a885088a67eee50be2a257a97b85024334abfe75
GIT binary patch
literal 3827
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
new file mode 100644
index 0000000000000000000000000000000000000000..75746784e7d3e6d3f4a5cdd8c85f90d6decce98d
GIT binary patch
literal 3835
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
new file mode 100644
index 0000000000000000000000000000000000000000..66785ea4e9b9febdc99333b58c9b2b7752378d8f
GIT binary patch
literal 5376
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
new file mode 100644
index 0000000000000000000000000000000000000000..97de77f9f4f60d7ab21ec1ed38b4cf614b43df1d
GIT binary patch
literal 5371
zc$_U*1z1z>_h)0o=<a5KbT`N(H>5;Tx=|4Zh@jMlA}t^dQc6j8$7l%!krIRrBm_jd
zk^SfQ_rK5k+<Tw*zVW%|J<mCx&xtWH(xW6}BO@RnpoGJ;O$i79Sp2&QDKY-u`>@0e
z{{VU1F}y=SP?t!4?L<UCz)%m@zGD^y*v$n$wVioB+@rccWW@0U^pg3>CoDn=Ziq~x
zlPZOh*MS2N&i5%4>>+h>0|_n$2xCem`6MXa`(#%XA;30XYs|S|3(lbRJ$^(uDP8Al
zJj6x<kfX%%;mO9*&0c&uYl6F+?9_O$>`~9AZP(eK%Owo^XT`v)YC07<9snH=YFy9+
zBW;<A)200@@Kr{(fjxzHN_30iUQO&+6Wk&LC&BvBTqY|s3Is!fU}#<to7!AVaX9GV
zAt&Fx>X;S!V(+Ad(O|kKN{op21DSdMhP~57?<(6hh5=ShE*7qgLV^fAM#{@A>1q4Z
zV9q51fPWh!=m1?*Q~2*V{lh`YOdxFh9zbX)?j!u)F3O-rm44;EwN?nclUxMLfg7*A
zfIxv+22k$&ktvUi-!VP-?%$W7T6ugozOiZ|{Yh94-`^4hClP=l+UT?v8k@I`t&JBI
zb*5}*8{YfbQMIU``v~oY>y<`9pJgbkpfOjT_y9?Dkb;DqAx|fd)uv-MTE3BEfO;tF
z`sG1b(TL(Y^J;AU=Y|8K{chA_Y?~5`cVE1y+(9~({pZk+>3p_VD{-{m)uFBF=$xH<
zDNV<#D&Uo&6Kps8jck~>UdV$t;&X@6+c^4bv2$vyB%yT6Fj-MPQo{^QPmrvG$C-ru
zNjjaXv7wYzf2ZKG8T^<isz8WBfSeETzoR(^Q=A}eY;5A%+uLXPclgfr<4qZc91K>4
z(@aCl`r~%^zm*s+n%UVc<pc?j-vR#57FlqfNkZ?350#xT-Jvy5UT>s^@XY930bAKm
z?fXIuxIcCs&&)jpHT4bue?kmB`ndC1A#*#WwXvbv)xa8(!e4A`!QC}0lg^s#pF#0W
zDF?aJwwY%G9t_MT9C-KG)fdUZfcnoVkRVed^f6M>=()JB1r}nx%8)hkzkV2xFi;mT
z0T=NglTn7JGsq?Cy!~&rBs2{`cJqP4u`4bi#kDS<SOEXSFm6<70ByXOTyc%&Z0Zi^
zbu%w3&C$l^hV>xL%08+Gd?P0<y{9Pz;CU@<cQxzO$`WdqwNwjfeoET=z(0Y&l5=x`
z-6I(9L49Dk=82TNygA}jpCFEW7*8aq40)e4LkB-u=^b*hL04=?gLmD7Q$l!fOcUs&
zHEBJ6TOsBjWInK0IL=df{~+|&i9HkR2n`*K8X$r_M!1XPO=ZM8IjwM)it9!(`sjIS
zw6?Ne3PDtX|4~=N3?wNB#MYS+ZEQc->vw0pqR1ij(S#w3SJM)H@7*xM%6z;zPC)Tl
zi^LP+EPe{=7-LGyGOi)@77Z%G6+1RCf>b4;)|wIT6_lXtGcJD0<*33CNs1b~zYOXt
z4Zd>m;){~~ZY%dC=p3n)m@z7g2EaB=^wN#a)}EqGd|z74TMzArlBs*lendozTWY}H
z0M)%*6F$5j#qdmGtz*S?DNX7H_+ziQM^b!9HX`)2_me?Wa3q;hZlg6bI0?E9mfHq?
zUG5l|n$tEbSwpUEerC=OAZPIZWQ)+&Cr*Nnf=vLW9MYoy&WarsteTi%Kk=b#uQFOC
z?KtMH1Y^ELf70<f?EwW3N{+q&Xe5iU&;vq}_<$#Q4aIXUoW;hRO~ktq37dzO+G;rU
zM{0y{p3k6GQqj+7Yfd}>GSb$rITzT4;{FFwhvd(umcBh!yNVRM03#HO*jo@CFPaO%
z*O-}(j}X=%wzG`bnJ%5iCP=xXzPf}w<4&<7=IPenB8@yJKMcR_JmLQXkh%k6Q>_@l
z9MQdKtV`Y7@iW_6uYKkgQ?uuNoRpYduwYFAj?W=r+;63=C%~Jlk>1m@2X@`9Zc^s|
zezt0wySU7=TP*j5_K#)qy8TB^(~a>w0CrLnz#>7eIo_WkaA^M{^Ou2yuixcI9OiN~
zF%-WTD3(ZG|8_e1tsORS`S8CPIiv`xdBOckJba!zK%1_V!QJOHZ4z9vrKV$U0YnyR
z{Q*I9&YA5m#?=g<z=wiRqId4t$~XAYU|_<NQdpuJm1!B9Y>R1&<JXyHXuJ3><CM>m
zk~^2+|Ii4LclG+`TKN&xhqHCVQW<_)KHC>jp*~%*DbfzTpKi{f-%Pf_51=DJ5$`!$
zH9Z>Q@ZOqNoBm+Zje|513Wv@bOPQ%pF|5xIN)dsJPy~z!nI!gw9<g+8+&r%l^$%)$
z9S5EzKXFYTN;u=yZ02Nx8Z|UIoRI9V7Q}n-Z%6I&H<9-boO({}tnVENT0Etiq3eJS
zy@e9fdw#t*e6vY4?|<{mw#uYluY|!?`51R^&zhk4Z&T}`3@vyb%A?3w`@Op$baOS|
zUxL9V=bhPsOIB%!@6p`N&!0v)FwLH`9oS73lu10lf9AZVpp=p%_i;64o?`Lyy|#Mi
z*Y_r$LXvVp%|UO{TDlew>Tr*2Db1z?B8f6Sy=PrQ9WS1xf9k#A&IxB%p+ktEewd&)
zGLAczkM<{83G^uznJ-0OJCNRJVR~1ol5?W^hgx$?&*g5~>To9E%KG};VUaDcx^^M`
z>tDU2>-4+a>fTajW5QE&JuHbD>=dhMp!!%OtJ8MNGpwFRh{n^jOKsa~BEOUIzgiqr
zr<hl`iNivV<s>8_*tG|!aD`hwyul~6uLje+`Zzbuy`k&T*~^-uhdxB7d>eNQkD+a6
zu<mUgWpzLE=X;Y<R(wRp!oiwUK{-i8{$tXcRm;XjRwV+ccwVe`#bDxO2d|Hltqe(t
z%dx4o-AzZ~vEh@3ftnuG<8gL6#4XfsOSH56%h0Fm?C*@bG*-@B#CD<^6S952mle8@
zNSKyfb+C<gS!An@N}ZXDhk50jEO-@W65*`RbFEzKwYCw=H63R!;ZuP@oTKW*>XDe(
z`n<Fm^YAx{s^60FF~RGE$tA6UUBk6TzqUH3xOqFn>G?Iw^C^|vL|o~~)Q}{5pmG6H
z5AaA~>+yx8*wf1@*v(H<)uXcyMfH-m%6@dwpwAt2NM&04Wcm2?p%^_%&%L+MO1By8
zcFJY*=GPmc;(~qnxDbw4--tK`AEjEm)=j#520Y~Il5Z7ry<Hex>;qMv*%Ge@hgq?3
z!_bAGdIvy9k?wUl>!|Jur<$<D-@U`E2n>bzEaF#OmSdf6_KxgcC|CFX2HXLYSj08l
z@bOxd<4nsng11(QgwFHW7P+z-#rr+=Rnh%z0pW^P6|srav&8h5QG0!x*>6BH5ztdn
z?2NhUf#935=$2#=-Zb*yTjH`cOoLmJ(SH;d%fH0EMfO6Z>Ok@E5#0$DgSsEFCsZ+6
z1Ljl07k(dY8La%J#pY1_I|ouvl#qcCtQRmQbU$~ANuN0ZO4)1;zj+wF9Pf+7CA_WV
z(N}s2cXS4;1?}IL624%02JzCjx`<VY7<_Z&=C;nwAL+M*8cb|ikquLldBY3AssX=a
z2%mBJ2Sdt5gDDx=dyKYKMe1mF9%qW?Bub(i>X<JJ$~ps1NrxWz$D-3uzx$m}3>B@#
zd}y|bvF4bMnQ+zH7a3mlZ%5p!no744_)ueACVE9b73%N@6POV))xqRu8`tS;HNhs5
zs|ZQ50Ggp64(=w6ZjY)Z4NxfKKn^DE-W(Y7#%e|^TH_->*1Lz{D!9&5|0hYlSHJBO
zp~}vH)!SuWiP=AR!!_1FNCC#-y1UC0{1d;St?6**6PC#9xZ0;1y}J+lHqWKo{4N`U
zF7sM3SA}KX*R=!Hz^XX@DOn`Q3m+l9j>v1fE?pUY&<2jfMCU+tNX4i_V;3g_`T}Gm
z5=_UmX|Sgl=CSd7r)w;Eh3M84HZ^N@Y@g#JvgtN!>@xu-#@nLRo${u#GX^aodVh91
z?_Y-QI2pen%JY@u<pe9eB-lje9&pJR$F`^&qq$Cv4lW$f=_Qz-cYPu=yWTy8&?G?l
zHte;=$|{0bJDA6#4JU;IsxzzZ^5?SI;wo{vVwjy@v^WE{Gn@`u)537Q$<)?1p^)qN
zZE?7(#qAU%=Ra~#khc|(Eh#S^&OQ~N@>TUa-;#w;>VZaF-OsyvKzcYd?FVT6;pyPd
z5AG#~l@-9VueddSyIiZKa3r5S|Dsc-%SB_Csb$-P0eSN8&3(f@IQ19m@w})ae7Y7&
zkcg74R-q!fb4xZ+ZHo1-9ea^OAolLwY;tmlAbv>YZLZV2BMYicOG{$L0|aRp1M!^f
zD-iGRZ?M2pj(sl<vg#_&jP~+%Q>*CbZYMmQ@(jc5bTEEACz9*?l3gBOT&?+=)#9+m
z^P6W^G+)Tp5@e|CHYeDC0hL|v;F4_aU!deasd<06%}Ixv@=jEwW{-%M^(aP-&kV?f
z-4>}yQj4VJI3Z=`)1`5S#{Od%EQndAp7-^H3PH>+_En~~+f*Sa&REZi^taJc#7XEN
z($-^*)rMvblUHt8gI4|Cja;=cGk&?CmRppilwCG<2MVuCdWZy`hz+STu?+^(!36MN
z&89v_)_?ANV7UH3x&5ii3!1s!o&-r4`P@};Nu>ZY%~}Y1Kty`w5TRI5G;9}2OFqaU
zC-X~p2OxT)l)CfbCEVFQ!SKAjd_{d&nqKxTXvi2z7IaNvjSm@5w`p01dPu^W$E$Dk
zorq9vxgF@abbO%?TwLGxfxT>@j@v`L{ff>zG*j%TK8!&hM@iRz4L;A2F7MA<jd<)l
zAR7zv62LpN=#5yF+V@>S>sbDs?3u}%K)=Z&s@KoBUuh7<DpEhGOn&{PVQO~v{nSq3
zD{99O<q#GXGlKO8qD`{xnlFQlfku2#qTfX=cdTLPExb-EU3E<4H0d;_eP2!+#jg#?
zL?hRSLwQC6)b-WwW-p94zeki#ADP}?X5jiHM2BEPN!_&)7Z+FiG-kag6j=1o^XiS&
zc84c|<b}dnY{faRw2kqvcRJ9D?<Q#emaB8ArCRGp?tkDFwepOMwM$RHZ)D}Vu<Tmf
ze+H>vrM&}!dHZbi@LY91xkh04l}wbDXMoUa`qI996z^w27L)nJi@^@P-K8}aE<O1c
ztGq$#qGqIl{$;^hv*XErOy&`;TiuUox?q_|s?q6nFUh-w=t#>wirWYJKqCQ~SwbT-
zSg{%RHSsx#fqm79>3PC_WK8<tahn0!fu;^Q%wj@wL2^*B<Fr9{rLis;GP3u@P5+JO
zReh|M)Si-_*<Qwg!(sZgQ7FcuZJeWK(Z3~RJ}k_H>V%jHu<Tu7VDz!GJApsj=sEMf
zHI^FSGUAK!<|}Umrt|Tf#D{2{fPN^2APNR7X<0q>(i}M3Ujc88@IYGYPiv%$f=Ygz
zg{L`h-2D12K=Y1m-mQj)w`tByuK(AVh*$VgoG9)Q$GKFtZ)OrjrvSi%2ERVlafnuq
z%p`jWkSen8st!DDu?#s2kcat5dYz1t-C9mQElOl^kc{6VXWXBc`%o%Ho*q&iw?DSw
z49Sj5j#M{&(8{8B&KaLKvLd~qEqS(Fs(o==|4OZ~|Er0b2mPn0J}<q*rXRe{&y=*O
zVx33;F4O%SW!-i@14*lzVyA7y>X;gk_Py<ZEc?@JPG`4}+&`yB+SlahLuVE$bpQz~
zg(7_H;t-CZB&~f&6=;>}yF}E&{)F9<b=&~YRUKcTeflzl?n^S9nXZv@M(7R;(4-sS
za|G%F&$q0KE(v-=vb<BocN^+Pn+)EJU<5Y2tl9@iTNk;Qb{#lmQ)Yj%f#a+d`0?WH
zJ)M*~wzNQQQ_ql=A9$gVt&BlAZ6Xilouumr;x(03T?8Fn|Ik`l-!QQ~332{1&Z*dp
ziMKyiO!DPEjqi@<!ip+=3k@{rK*!9i{+`AYZC`CyuXWMG_Y4^~liw)||09YF3?=0H
z$Beed4Gl3S-NCg5I~2BBL&LvQqXRtTP{fi{ZY_B+o-eZ`r>A1~Ggfly?A9-$<-XHR
zM&#|<a8YN=@)yBbbWAoZkBo#rg{vU=OkfZnJo+g;yc8B^!AkYK4MgW>cb7*!j-c>C
zOBNn-y7zVX($!YF=!)~UmM>Tt$%MtUs`lI(BJH8Kbz%QfZC={%;?QUg(6JWQC#iAI
zwEDPM$GFqnsv}>4YH4)1^>>y{tXXDA_=Ygb{aVGbMfHznW)fZ=n1iMrd#kFdbnNWx
zb`Cm8yXn+d`+8f=Yzw`vOrn_Q^hykKnm@L;v-ON`!5kw<<^D)AR&274$A!qd$Ka3S
zk!To~tf6O-^!a{a3)QHXM8uWvE>p&Fba6-FT6>`yHOzP9C)g*W{46g<t0*k;P%zSh
z+1DY-Qdo4Xi*|(qF9$y<0kz1KenLvo5E^O}makg&>xWm7;sL~|YuFXQFUP*jaHrmn
z|M>6$10(F`X(h@uYNndS2wrNC^|W5>^2e~WX{278y3#z<fs0FNb%Y{6$KLme&Q&za
zZFdy_+viWmikYd`wtq7j6x>Hyfc<f;&BU$>>Mr3Ew!R;?Od;a+UK_zNO*%PwK3=76
zB^)ZwQ@gRbQV@$6<}QpCmEO)4w<Br0x&_}*G6C3?3ZD?hpIfFr<s$`EDGBuK>$h=1
zeJ*99>Hdc6eWZ3u9`V|X!!UkaltS9YQut%fT)O98UN}g0>Q!piOdBXV)tNuNZju(j
zYjr|W1nB}m62<4rg4*a3f;nKeSg0fhuYJI;o9|8nZN>d}BOisqEX=!doT}cpKBL3Z
zH0B;ZsmLLlS2(WB{8w@y#*4SjHND=nlq&ZR|JA?lfy}PS0h|Jgk?=g^f-%uMHT4b1
zzlu-{Z^7D3jBs=@{ujD($dvq-nFIvz=C=Tj66IVr0yC>>6yMv8a^z+Osxl%#ti=Cn
zEzoT6bZXBlwz+%Y(yR{gnU$#YzK$W)O+GOjdjipa<v7$m(pFW(bxFAR=_{ACt~?ce
sGGaF|zzG+_p7%(<=WzKUv!Uz__jBEw@392C2m<^C*D=zr)^v>cKTy`=s{jB1
new file mode 100644
index 0000000000000000000000000000000000000000..dfae86b706841b31eb45d9189d783cb3a526006d
GIT binary patch
literal 9050
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
new file mode 100644
index 0000000000000000000000000000000000000000..77362488ac973858172654e824f03b78f89b54cc
GIT binary patch
literal 9077
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
NDafcwS3WTd`ai*~9jgEU
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/resources/layout/overlay.xml
@@ -0,0 +1,57 @@
+<?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/.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:clipToPadding="false">
+
+    <LinearLayout
+        android:id="@+id/overlay"
+        style="@style/Overlay">
+
+        <ImageView
+            android:id="@+id/image"
+            style="@style/Overlay.Image" />
+
+        <TextView
+            android:id="@+id/title"
+            style="@style/Overlay.Title" />
+
+        <TextView
+            android:id="@+id/subtitle"
+            style="@style/Overlay.Item" />
+
+        <TextView
+            android:id="@+id/hint"
+            style="@style/Overlay.Hint"
+            android:gravity="center_horizontal" />
+
+        <Button
+            android:id="@+id/button"
+            style="@style/Overlay.Button"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/check"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:src="@drawable/overlay_check"
+        android:visibility="invisible" />
+
+    <!-- This transparent View is used to overlay the
+         entire Activity with an onClickListener. -->
+    <View
+        android:id="@+id/fullscreen_click_target"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"
+        android:visibility="gone" />
+</merge>
--- a/mobile/android/base/resources/values/styles.xml
+++ b/mobile/android/base/resources/values/styles.xml
@@ -733,16 +733,70 @@
     </style>
 
     <style name="GeckoActionBar.Buttons">
         <item name="android:background">@android:color/transparent</item>
         <item name="android:textColor">@color/placeholder_active_grey</item>
         <item name="android:gravity">right</item>
     </style>
 
+    <style name="Overlay">
+        <item name="android:layout_width">@dimen/overlay_prompt_container_width</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_gravity">bottom|center</item>
+        <item name="android:background">@android:color/white</item>
+        <item name="android:orientation">vertical</item>
+    </style>
+    <style name="Overlay.Title">
+        <item name="android:layout_width">@dimen/overlay_prompt_content_width</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_gravity">center</item>
+        <item name="android:fontFamily">sans-serif-light</item>
+        <item name="android:gravity">center_horizontal</item>
+        <item name="android:paddingBottom">20dp</item>
+        <item name="android:textColor">@color/text_and_tabs_tray_grey</item>
+        <item name="android:textSize">20sp</item>
+    </style>
+    <style name="Overlay.Item">
+        <item name="android:layout_width">@dimen/overlay_prompt_content_width</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_gravity">center</item>
+        <item name="android:gravity">center</item>
+        <item name="android:lineSpacingMultiplier">1.25</item>
+        <item name="android:paddingBottom">20dp</item>
+        <item name="android:textColor">@color/placeholder_grey</item>
+        <item name="android:textSize">16sp</item>
+    </style>
+    <style name="Overlay.Image" parent="Overlay.Item">
+        <item name="android:paddingTop">40dp</item>
+        <item name="android:paddingBottom">30dp</item>
+    </style>
+    <style name="Overlay.Hint">
+        <item name="android:layout_width">@dimen/overlay_prompt_content_width</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_gravity">center</item>
+        <item name="android:gravity">center</item>
+        <item name="android:textColor">@color/action_orange</item>
+        <item name="android:textSize">14sp</item>
+        <item name="android:textStyle">italic</item>
+    </style>
+    <style name="Overlay.Button" parent="Widget.BaseButton">
+        <item name="android:layout_width">@dimen/overlay_prompt_button_width</item>
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:layout_gravity">center</item>
+        <item name="android:gravity">center</item>
+        <item name="android:background">@drawable/button_background_action_orange_round</item>
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:textSize">16sp</item>
+        <item name="android:layout_marginLeft">20dp</item>
+        <item name="android:layout_marginRight">20dp</item>
+        <item name="android:layout_marginBottom">40dp</item>
+        <item name="android:layout_marginTop">40dp</item>
+    </style>
+
     <style name="ShareOverlayTitle">
         <item name="android:gravity">center_horizontal</item>
         <item name="android:paddingLeft">15dp</item>
         <item name="android:paddingRight">15dp</item>
     </style>
 
     <style name="TextAppearance.ShareOverlay">
         <item name="android:fontFamily">sans-serif</item>
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -132,16 +132,20 @@
   <string name="overlay_share_reading_list_btn_label">&overlay_share_reading_list_btn_label;</string>
   <string name="overlay_share_bookmark_btn_label_already">&overlay_share_bookmark_btn_label_already;</string>
   <string name="overlay_share_reading_list_btn_label_already">&overlay_share_reading_list_btn_label_already;</string>
   <string name="overlay_share_send_tab_btn_label">&overlay_share_send_tab_btn_label;</string>
   <string name="overlay_share_no_url">&overlay_share_no_url;</string>
   <string name="overlay_share_select_device">&overlay_share_select_device;</string>
   <string name="overlay_no_synced_devices">&overlay_no_synced_devices;</string>
 
+  <string name="overlay_want_to_send">&overlay_want_to_send;</string>
+  <string name="send_to_any_other_devices">&send_to_any_other_devices;</string>
+  <string name="overlay_no_account_hint">&overlay_no_account_hint;</string>
+
   <string name="settings">&settings;</string>
   <string name="settings_title">&settings_title;</string>
   <string name="pref_category_general">&pref_category_general;</string>
   <string name="pref_category_general_summary">&pref_category_general_summary2;</string>
 
   <string name="pref_category_search">&pref_category_search3;</string>
   <string name="pref_category_search_summary">&pref_category_search_summary;</string>
   <string name="pref_category_accessibility">&pref_category_accessibility;</string>
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FxAccountConstants.java
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FxAccountConstants.java
@@ -99,9 +99,10 @@ public class FxAccountConstants {
   public static final String ACTION_FXA_FINISH_MIGRATING           = AppConstants.ANDROID_PACKAGE_NAME + ".ACTION_FXA_FINISH_MIGRATING";
   public static final String ACTION_FXA_GET_STARTED                = AppConstants.ANDROID_PACKAGE_NAME + ".ACTION_FXA_GET_STARTED";
   public static final String ACTION_FXA_STATUS                     = AppConstants.ANDROID_PACKAGE_NAME + ".ACTION_FXA_STATUS";
   public static final String ACTION_FXA_UPDATE_CREDENTIALS         = AppConstants.ANDROID_PACKAGE_NAME + ".ACTION_FXA_UPDATE_CREDENTIALS";
 
   public static final String ENDPOINT_PREFERENCES  = "preferences";
   public static final String ENDPOINT_NOTIFICATION = "notification";
   public static final String ENDPOINT_FIRSTRUN = "firstrun";
+  public static final String ENDPOINT_SHAREPLANE = "shareplane";
 }
--- a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountWebFlowActivity.java
+++ b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/activities/FxAccountWebFlowActivity.java
@@ -16,18 +16,21 @@ import org.mozilla.gecko.sync.setup.acti
  */
 public class FxAccountWebFlowActivity extends FxAccountAbstractActivity {
     protected static final String LOG_TAG = FxAccountWebFlowActivity.class.getSimpleName();
 
     protected static final String ABOUT_ACCOUNTS = "about:accounts";
 
     public static final String EXTRA_ENDPOINT = "entrypoint";
 
+    public static final String EXTRA_FROM_URL = "fromurl";
+
     protected static final String[] EXTRAS_TO_PASSTHROUGH = new String[] {
             EXTRA_ENDPOINT,
+            EXTRA_FROM_URL
     };
 
     private final String action;
     private final String extras;
 
     public FxAccountWebFlowActivity(int resume, String action) {
         this(resume, action, null);
     }