Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(819)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/browseractions/BrowserActionsTabCreatorManager.java

Issue 2984453002: Add Browser Actions tab model selector and open a tab through it if ChromeTabbedActivity is not ava…
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/browseractions/BrowserActionsTabCreatorManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browseractions/BrowserActionsTabCreatorManager.java b/chrome/android/java/src/org/chromium/chrome/browser/browseractions/BrowserActionsTabCreatorManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..05059d8a1c11cb11b5dbfd605605a713d7cb1bc1
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browseractions/BrowserActionsTabCreatorManager.java
@@ -0,0 +1,79 @@
+// 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.browseractions;
+
+import org.chromium.chrome.browser.TabState;
+import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tab.TabDelegateFactory;
+import org.chromium.chrome.browser.tabmodel.TabCreatorManager;
+import org.chromium.chrome.browser.tabmodel.TabModel;
+import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
+import org.chromium.content_public.browser.LoadUrlParams;
+import org.chromium.content_public.browser.WebContents;
+
+/**
+ * The mananger returns a {@link BrowserActionsTabCreator} to create Tabs for Browser Actions.
Yusuf 2017/07/18 22:59:47 manager typo
ltian 2017/08/07 23:24:11 Ops, sorry for that!
+ */
+public class BrowserActionsTabCreatorManager implements TabCreatorManager {
+ private final BrowserActionsTabCreator mTabCreator;
+
+ public BrowserActionsTabCreatorManager() {
+ mTabCreator = new BrowserActionsTabCreator();
+ }
+
+ /**
+ * This class creates various kinds of new tabs specific for Browser Actions.
+ * The created tabs are not bound with {@link ChromeActivity}.
+ */
+ public class BrowserActionsTabCreator extends TabCreator {
+ private TabModel mTabModel;
+
+ @Override
+ public boolean createsTabsAsynchronously() {
+ return true;
+ }
+
+ @Override
+ public Tab createNewTab(LoadUrlParams loadUrlParams, TabLaunchType type, Tab parent) {
+ Tab tab = Tab.createDetached(new TabDelegateFactory(), true);
+ tab.loadUrl(loadUrlParams);
+ mTabModel.addTab(tab, -1, TabLaunchType.FROM_BROWSER_ACTIONS);
Yusuf 2017/07/18 22:59:47 if we are using FROM_BROWSER_ACTIONS for this, whe
ltian 2017/08/07 23:24:11 New plan will opens all the tabs in lazy load mode
+ return tab;
+ }
+
+ @Override
+ public Tab createFrozenTab(TabState state, int id, int index) {
+ Tab tab =
+ Tab.createFrozenTabFromState(id, null, false, null, Tab.INVALID_TAB_ID, state);
+ mTabModel.addTab(tab, index, TabLaunchType.FROM_RESTORE);
+ return tab;
+ }
+
+ @Override
+ public Tab launchUrl(String url, TabLaunchType type) {
+ return createNewTab(new LoadUrlParams(url), type, null);
+ }
+
+ @Override
+ public boolean createTabWithWebContents(
+ Tab parent, WebContents webContents, int parentId, TabLaunchType type, String url) {
+ createNewTab(new LoadUrlParams(url), type, null);
+ return true;
+ }
+
+ /**
+ * Sets the tab model and tab content manager to use.
+ * @param model The new {@link TabModel} to use.
+ */
+ public void setTabModel(TabModel model) {
+ mTabModel = model;
+ }
+ }
+
+ @Override
+ public TabCreator getTabCreator(boolean incognito) {
+ return mTabCreator;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698