| Index: chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappTabDelegate.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappTabDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappTabDelegate.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e3e1e9e9a2c74c14e48d61cf70a12c6cf87e00c1
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappTabDelegate.java
|
| @@ -0,0 +1,42 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +package org.chromium.chrome.browser.webapps;
|
| +
|
| +import android.net.Uri;
|
| +import android.support.customtabs.CustomTabsIntent;
|
| +
|
| +import org.chromium.chrome.browser.tab.Tab;
|
| +import org.chromium.chrome.browser.tab.TabIdManager;
|
| +import org.chromium.chrome.browser.tabmodel.AsyncTabParamsManager;
|
| +import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
|
| +import org.chromium.chrome.browser.tabmodel.document.AsyncTabCreationParams;
|
| +import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
|
| +
|
| +/**
|
| + * Asynchronously creates Tabs for navigation originating from an installed PWA.
|
| + *
|
| + * This is the same as the parent class with exception of opening a Custom Tab for
|
| + * {@code _blank} links and {@code window.open(url)} calls instead of creating a new tab in Chrome.
|
| + */
|
| +public class WebappTabDelegate extends TabDelegate {
|
| + private final WebappActivity mActivity;
|
| +
|
| + public WebappTabDelegate(WebappActivity activity, boolean incognito) {
|
| + super(incognito);
|
| + this.mActivity = activity;
|
| + }
|
| +
|
| + @Override
|
| + public void createNewTab(AsyncTabCreationParams asyncParams, TabLaunchType type, int parentId) {
|
| + int assignedTabId = TabIdManager.getInstance().generateValidId(Tab.INVALID_TAB_ID);
|
| + AsyncTabParamsManager.add(assignedTabId, asyncParams);
|
| +
|
| + CustomTabsIntent customTabIntent =
|
| + new CustomTabsIntent.Builder().setShowTitle(true).build();
|
| +
|
| + customTabIntent.intent.setPackage(mActivity.getPackageName());
|
| + addAsyncTabExtras(asyncParams, parentId, true, assignedTabId, customTabIntent.intent);
|
| + customTabIntent.launchUrl(mActivity, Uri.parse(asyncParams.getLoadUrlParams().getUrl()));
|
| + }
|
| +}
|
|
|