| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java | 
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java | 
| index 0ab0d9dd95c5568afc62e2793e6e559c90b8e8bf..731704b0dcdf751e445e7ae2c8d0e8fba8c28702 100644 | 
| --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java | 
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java | 
| @@ -14,6 +14,7 @@ import android.util.Base64; | 
| import org.chromium.base.ApiCompatibilityUtils; | 
| import org.chromium.base.ApplicationStatus; | 
| import org.chromium.base.Log; | 
| +import org.chromium.chrome.browser.IntentHandler; | 
| import org.chromium.chrome.browser.ShortcutHelper; | 
| import org.chromium.chrome.browser.document.ChromeLauncherActivity; | 
| import org.chromium.chrome.browser.metrics.LaunchMetrics; | 
| @@ -58,7 +59,15 @@ public class WebappLauncherActivity extends Activity { | 
| webappMacString == null ? null : Base64.decode(webappMacString, Base64.DEFAULT); | 
|  | 
| Intent launchIntent = null; | 
| -            if (webappMac != null && WebappAuthenticator.isUrlValid(this, webappUrl, webappMac)) { | 
| + | 
| +            // Permit the launch to a standalone web app frame if the intent was sent by Chrome, or | 
| +            // if the MAC is present and valid for the URL to be opened. | 
| +            boolean isTrusted = IntentHandler.wasIntentSenderChrome(intent, | 
| +                    ApplicationStatus.getApplicationContext()); | 
| +            boolean isUrlValid = (webappMac != null | 
| +                    && WebappAuthenticator.isUrlValid(this, webappUrl, webappMac)); | 
| + | 
| +            if (isTrusted || isUrlValid) { | 
| LaunchMetrics.recordHomeScreenLaunchIntoStandaloneActivity(webappUrl, webappSource); | 
|  | 
| String activityName = WebappActivity.class.getName(); | 
|  |