| Index: chrome/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2013fa5a2284a9cbb661cc930d8e431c7662f35d
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/EmptyTabModel.java
|
| @@ -0,0 +1,136 @@
|
| +// Copyright 2014 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.tabmodel;
|
| +
|
| +import com.google.common.annotations.VisibleForTesting;
|
| +
|
| +import org.chromium.chrome.browser.Tab;
|
| +import org.chromium.chrome.browser.profiles.Profile;
|
| +
|
| +/**
|
| + * Singleton class intended to stub out Tab model before it has been created.
|
| + */
|
| +public class EmptyTabModel implements TabModel {
|
| +
|
| + /**
|
| + * Used to mock TabModel. Application code should use getInstance() to construct an
|
| + * EmptyTabModel.
|
| + */
|
| + @VisibleForTesting
|
| + protected EmptyTabModel() {}
|
| +
|
| + // "Initialization on demand holder idiom"
|
| + private static class LazyHolder {
|
| + private static final EmptyTabModel INSTANCE = new EmptyTabModel();
|
| + }
|
| +
|
| + /**
|
| + * Get the singleton instance of EmptyTabModel.
|
| + * @return the instance of EmptyTabModel
|
| + */
|
| + public static EmptyTabModel getInstance() {
|
| + return LazyHolder.INSTANCE;
|
| + }
|
| +
|
| + @Override
|
| + public Profile getProfile() {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public boolean isIncognito() {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public boolean closeTab(Tab tab) {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public Tab getNextTabIfClosed(int id) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public void closeAllTabs() {
|
| + }
|
| +
|
| + @Override
|
| + public int getCount() {
|
| + // We must return 0 to be consistent with getTab(i)
|
| + return 0;
|
| + }
|
| +
|
| + @Override
|
| + public Tab getTabAt(int position) {
|
| + return null;
|
| + }
|
| +
|
| + @Override
|
| + public int indexOf(Tab tab) {
|
| + return INVALID_TAB_INDEX;
|
| + }
|
| +
|
| + @Override
|
| + public int index() {
|
| + return INVALID_TAB_INDEX;
|
| + }
|
| +
|
| + @Override
|
| + public void setIndex(int i, TabSelectionType type) {}
|
| +
|
| + @Override
|
| + public void moveTab(int id, int newIndex) {}
|
| +
|
| + @Override
|
| + public void destroy() {}
|
| +
|
| + @Override
|
| + public boolean isClosurePending(int tabId) {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public boolean closeTab(Tab tab, boolean animate, boolean uponExit, boolean canUndo) {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public TabList getComprehensiveModel() {
|
| + return this;
|
| + }
|
| +
|
| + @Override
|
| + public void commitAllTabClosures() {
|
| + }
|
| +
|
| + @Override
|
| + public void commitTabClosure(int tabId) {
|
| + }
|
| +
|
| + @Override
|
| + public void cancelTabClosure(int tabId) {
|
| + }
|
| +
|
| + @Override
|
| + public boolean supportsPendingClosures() {
|
| + return false;
|
| + }
|
| +
|
| + @Override
|
| + public void addTab(Tab tab, int index, TabLaunchType type) {
|
| + assert false;
|
| + }
|
| +
|
| + @Override
|
| + public void addObserver(TabModelObserver observer) {
|
| + }
|
| +
|
| + @Override
|
| + public void removeObserver(TabModelObserver observer) {
|
| + }
|
| +
|
| +}
|
|
|