Index: chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java b/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java |
index ddb525452dc8eedbff82a490db6fc124202f5b9e..3d83dec2543a8837fdeeac524dd384912f6595e8 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/pageinfo/WebsiteSettingsPopup.java |
@@ -10,6 +10,7 @@ import android.animation.AnimatorSet; |
import android.animation.ObjectAnimator; |
import android.app.Activity; |
import android.app.Dialog; |
+import android.content.ActivityNotFoundException; |
import android.content.ClipData; |
import android.content.ClipboardManager; |
import android.content.Context; |
@@ -48,6 +49,7 @@ import org.chromium.base.annotations.CalledByNative; |
import org.chromium.base.metrics.RecordUserAction; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ContentSettingsType; |
+import org.chromium.chrome.browser.instantapps.InstantAppsHandler; |
import org.chromium.chrome.browser.offlinepages.OfflinePageItem; |
import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; |
import org.chromium.chrome.browser.omnibox.OmniboxUrlEmphasizer; |
@@ -254,6 +256,7 @@ public class WebsiteSettingsPopup implements OnClickListener { |
private final ElidedUrlTextView mUrlTitle; |
private final TextView mUrlConnectionMessage; |
private final LinearLayout mPermissionsList; |
+ private final Button mInstantAppButton; |
private final Button mSiteSettingsButton; |
// The dialog the container is placed in. |
@@ -294,6 +297,9 @@ public class WebsiteSettingsPopup implements OnClickListener { |
// The name of the content publisher, if any. |
private String mContentPublisher; |
+ // The intent associated with the instant app for this URL (or null if one does not exist). |
+ private Intent mInstantAppIntent; |
+ |
/** |
* Creates the WebsiteSettingsPopup, but does not display it. Also initializes the corresponding |
* C++ object and saves a pointer to it. |
@@ -352,6 +358,10 @@ public class WebsiteSettingsPopup implements OnClickListener { |
mPermissionsList = (LinearLayout) mContainer |
.findViewById(R.id.website_settings_permissions_list); |
+ mInstantAppButton = |
+ (Button) mContainer.findViewById(R.id.website_settings_instant_app_button); |
+ mInstantAppButton.setOnClickListener(this); |
+ |
mSiteSettingsButton = |
(Button) mContainer.findViewById(R.id.website_settings_site_settings_button); |
mSiteSettingsButton.setOnClickListener(this); |
@@ -466,6 +476,10 @@ public class WebsiteSettingsPopup implements OnClickListener { |
|| mParsedUrl.getScheme().equals("https"))) { |
mSiteSettingsButton.setVisibility(View.GONE); |
} |
+ |
+ mInstantAppIntent = mIsInternalPage ? null |
+ : InstantAppsHandler.getInstance().getInstantAppIntentForUrl(mFullUrl); |
+ if (mInstantAppIntent == null) mInstantAppButton.setVisibility(View.GONE); |
} |
/** |
@@ -749,6 +763,13 @@ public class WebsiteSettingsPopup implements OnClickListener { |
mContext.startActivity(preferencesIntent); |
} |
}); |
+ } else if (view == mInstantAppButton) { |
+ try { |
+ mContext.startActivity(mInstantAppIntent); |
+ RecordUserAction.record("Android.InstantApps.LaunchedFromWebsiteSettingsPopup"); |
+ } catch (ActivityNotFoundException e) { |
+ mInstantAppButton.setEnabled(false); |
+ } |
} else if (view == mUrlTitle) { |
// Expand/collapse the displayed URL title. |
mUrlTitle.toggleTruncation(); |
@@ -809,6 +830,7 @@ public class WebsiteSettingsPopup implements OnClickListener { |
List<View> animatableViews = new ArrayList<View>(); |
animatableViews.add(mUrlTitle); |
animatableViews.add(mUrlConnectionMessage); |
+ animatableViews.add(mInstantAppButton); |
for (int i = 0; i < mPermissionsList.getChildCount(); i++) { |
animatableViews.add(mPermissionsList.getChildAt(i)); |
} |