blob: e3e1e9e9a2c74c14e48d61cf70a12c6cf87e00c1 [file] [log] [blame]
// 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()));
}
}