Commit 2a9f790b authored by Sophey Dong's avatar Sophey Dong Committed by Commit Bot

Pass in URL from the Sharing Hub to generate the QRCode.

Also fix the issue where the QR Code was not being loaded after revoking permissions.

Bug: 1079467, 1083351, 1099291
Change-Id: Ia5b61a461e0321e46631119c22a15ef851d8ddd5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2265248Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarGayane Petrosyan <gayane@chromium.org>
Reviewed-by: default avatarTanya Gupta <tgupta@chromium.org>
Commit-Queue: Sophey Dong <sophey@chromium.org>
Cr-Commit-Position: refs/heads/master@{#784342}
parent 682cf51f
...@@ -6,6 +6,7 @@ include_rules = [ ...@@ -6,6 +6,7 @@ include_rules = [
"+chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java", "+chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java",
"+chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java", "+chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java",
"+chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java", "+chrome/android/java/src/org/chromium/chrome/browser/document/ChromeLauncherActivity.java",
"+chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java",
"+chrome/android/java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java", "+chrome/android/java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java",
"+chrome/android/java/src/org/chromium/chrome/browser/modules/ModuleInstallUi.java", "+chrome/android/java/src/org/chromium/chrome/browser/modules/ModuleInstallUi.java",
"+chrome/android/java/src/org/chromium/chrome/browser/notifications/ChromeNotificationBuilder.java", "+chrome/android/java/src/org/chromium/chrome/browser/notifications/ChromeNotificationBuilder.java",
......
...@@ -14,8 +14,8 @@ public class QrCodeCoordinator { ...@@ -14,8 +14,8 @@ public class QrCodeCoordinator {
private final QrCodeDialog mDialog; private final QrCodeDialog mDialog;
private final FragmentManager mFragmentManager; private final FragmentManager mFragmentManager;
public QrCodeCoordinator(Activity activity) { public QrCodeCoordinator(Activity activity, String url) {
mDialog = new QrCodeDialog(); mDialog = QrCodeDialog.newInstance(url);
mFragmentManager = activity.getFragmentManager(); mFragmentManager = activity.getFragmentManager();
} }
......
...@@ -26,14 +26,21 @@ import java.util.ArrayList; ...@@ -26,14 +26,21 @@ import java.util.ArrayList;
* QrCodeDialog is the main view for QR code sharing and scanning. * QrCodeDialog is the main view for QR code sharing and scanning.
*/ */
public class QrCodeDialog extends DialogFragment { public class QrCodeDialog extends DialogFragment {
// Used to pass the URL in the bundle.
public static String URL_KEY = "url_key";
private ArrayList<QrCodeDialogTab> mTabs; private ArrayList<QrCodeDialogTab> mTabs;
private TabLayoutPageListener mTabLayoutPageListener; private TabLayoutPageListener mTabLayoutPageListener;
/** /**
* The QrCodeDialog constructor. * Create a new instance of {@link QrCodeDialog} and set the URL.
*/ */
public QrCodeDialog() { static QrCodeDialog newInstance(String url) {
mTabs = new ArrayList<QrCodeDialogTab>(); QrCodeDialog qrCodeDialog = new QrCodeDialog();
Bundle args = new Bundle();
args.putString(URL_KEY, url);
qrCodeDialog.setArguments(args);
return qrCodeDialog;
} }
@Override @Override
...@@ -50,6 +57,7 @@ public class QrCodeDialog extends DialogFragment { ...@@ -50,6 +57,7 @@ public class QrCodeDialog extends DialogFragment {
super.onResume(); super.onResume();
mTabLayoutPageListener.resumeSelectedTab(); mTabLayoutPageListener.resumeSelectedTab();
} }
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
...@@ -66,10 +74,9 @@ public class QrCodeDialog extends DialogFragment { ...@@ -66,10 +74,9 @@ public class QrCodeDialog extends DialogFragment {
} }
private View getDialogView() { private View getDialogView() {
View dialogView = (View) getActivity().getLayoutInflater().inflate( View dialogView = getActivity().getLayoutInflater().inflate(
org.chromium.chrome.browser.share.R.layout.qrcode_dialog, null); org.chromium.chrome.browser.share.R.layout.qrcode_dialog, null);
ChromeImageButton closeButton = ChromeImageButton closeButton = dialogView.findViewById(R.id.close_button);
(ChromeImageButton) dialogView.findViewById(R.id.close_button);
closeButton.setOnClickListener(v -> dismiss()); closeButton.setOnClickListener(v -> dismiss());
// Setup page adapter and tab layout. // Setup page adapter and tab layout.
...@@ -94,10 +101,11 @@ public class QrCodeDialog extends DialogFragment { ...@@ -94,10 +101,11 @@ public class QrCodeDialog extends DialogFragment {
private void initTabs() { private void initTabs() {
Context context = getActivity(); Context context = getActivity();
QrCodeShareCoordinator shareCoordinator = QrCodeShareCoordinator shareCoordinator = new QrCodeShareCoordinator(
new QrCodeShareCoordinator(context, this::dismiss); context, this::dismiss, getArguments().getString(URL_KEY));
QrCodeScanCoordinator scanCoordinator = new QrCodeScanCoordinator(context, this::dismiss); QrCodeScanCoordinator scanCoordinator = new QrCodeScanCoordinator(context, this::dismiss);
mTabs = new ArrayList<>();
mTabs.add(shareCoordinator); mTabs.add(shareCoordinator);
mTabs.add(scanCoordinator); mTabs.add(scanCoordinator);
} }
......
...@@ -18,11 +18,10 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; ...@@ -18,11 +18,10 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
public class QrCodeShareCoordinator implements QrCodeDialogTab { public class QrCodeShareCoordinator implements QrCodeDialogTab {
private final QrCodeShareView mShareView; private final QrCodeShareView mShareView;
public QrCodeShareCoordinator(Context context, Runnable closeDialog) { public QrCodeShareCoordinator(Context context, Runnable closeDialog, String url) {
PropertyModel shareViewModel = new PropertyModel(QrCodeShareViewProperties.ALL_KEYS); PropertyModel shareViewModel = new PropertyModel(QrCodeShareViewProperties.ALL_KEYS);
QrCodeShareMediator shareViewMediator = QrCodeShareMediator shareViewMediator =
new QrCodeShareMediator(context, shareViewModel, closeDialog); new QrCodeShareMediator(context, shareViewModel, closeDialog, url);
mShareView = new QrCodeShareView(context, shareViewMediator::downloadQrCode); mShareView = new QrCodeShareView(context, shareViewMediator::downloadQrCode);
PropertyModelChangeProcessor.create( PropertyModelChangeProcessor.create(
shareViewModel, mShareView, new QrCodeShareViewBinder()); shareViewModel, mShareView, new QrCodeShareViewBinder());
......
...@@ -15,10 +15,9 @@ import android.view.View; ...@@ -15,10 +15,9 @@ import android.view.View;
import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
import org.chromium.chrome.browser.share.BitmapDownloadRequest; import org.chromium.chrome.browser.share.BitmapDownloadRequest;
import org.chromium.chrome.browser.share.qrcode.QRCodeGenerationRequest; import org.chromium.chrome.browser.share.qrcode.QRCodeGenerationRequest;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
/** /**
...@@ -40,20 +39,17 @@ class QrCodeShareMediator { ...@@ -40,20 +39,17 @@ class QrCodeShareMediator {
* The QrCodeScanMediator constructor. * The QrCodeScanMediator constructor.
* @param context The context to use. * @param context The context to use.
* @param propertyModel The property modelto use to communicate with views. * @param propertyModel The property modelto use to communicate with views.
* @param closeDialog The {@link Runnable} to close the dialog.
* @param url The url to create the QRCode.
*/ */
QrCodeShareMediator(Context context, PropertyModel propertyModel, Runnable closeDialog) { QrCodeShareMediator(
Context context, PropertyModel propertyModel, Runnable closeDialog, String url) {
mContext = context; mContext = context;
mPropertyModel = propertyModel; mPropertyModel = propertyModel;
mCloseDialog = closeDialog; mCloseDialog = closeDialog;
mUrl = url;
// TODO(crbug.com/1083351): Get URL from Sharing Hub. ChromeBrowserInitializer.getInstance().runNowOrAfterFullBrowserStarted(
if (context instanceof ChromeActivity) { () -> refreshQrCode(mUrl));
Tab tab = ((ChromeActivity) context).getActivityTabProvider().get();
if (tab != null) {
mUrl = tab.getUrl().getSpec();
refreshQrCode(mUrl);
}
}
} }
/** /**
......
...@@ -271,7 +271,7 @@ class ChromeProvidedSharingOptionsProvider { ...@@ -271,7 +271,7 @@ class ChromeProvidedSharingOptionsProvider {
"Sharing.SharingHubAndroid.TimeToShare", "Sharing.SharingHubAndroid.TimeToShare",
System.currentTimeMillis() - mShareStartTime); System.currentTimeMillis() - mShareStartTime);
mBottomSheetController.hideContent(mBottomSheetContent, true); mBottomSheetController.hideContent(mBottomSheetContent, true);
QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(mActivity); QrCodeCoordinator qrCodeCoordinator = new QrCodeCoordinator(mActivity, mUrl);
qrCodeCoordinator.show(); qrCodeCoordinator.show();
}, },
/*isFirstParty=*/true); /*isFirstParty=*/true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment