1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package org.chromium.chrome.browser.tabmodel; 6 7import org.chromium.base.VisibleForTesting; 8import org.chromium.chrome.browser.Tab; 9import org.chromium.chrome.browser.profiles.Profile; 10 11/** 12 * Singleton class intended to stub out Tab model before it has been created. 13 */ 14public class EmptyTabModel implements TabModel { 15 16 /** 17 * Used to mock TabModel. Application code should use getInstance() to construct an 18 * EmptyTabModel. 19 */ 20 @VisibleForTesting 21 protected EmptyTabModel() {} 22 23 // "Initialization on demand holder idiom" 24 private static class LazyHolder { 25 private static final EmptyTabModel INSTANCE = new EmptyTabModel(); 26 } 27 28 /** 29 * Get the singleton instance of EmptyTabModel. 30 * @return the instance of EmptyTabModel 31 */ 32 public static EmptyTabModel getInstance() { 33 return LazyHolder.INSTANCE; 34 } 35 36 @Override 37 public Profile getProfile() { 38 return null; 39 } 40 41 @Override 42 public boolean isIncognito() { 43 return false; 44 } 45 46 @Override 47 public boolean closeTab(Tab tab) { 48 return false; 49 } 50 51 @Override 52 public Tab getNextTabIfClosed(int id) { 53 return null; 54 } 55 56 @Override 57 public void closeAllTabs() { 58 } 59 60 @Override 61 public int getCount() { 62 // We must return 0 to be consistent with getTab(i) 63 return 0; 64 } 65 66 @Override 67 public Tab getTabAt(int position) { 68 return null; 69 } 70 71 @Override 72 public int indexOf(Tab tab) { 73 return INVALID_TAB_INDEX; 74 } 75 76 @Override 77 public int index() { 78 return INVALID_TAB_INDEX; 79 } 80 81 @Override 82 public void setIndex(int i, TabSelectionType type) {} 83 84 @Override 85 public void moveTab(int id, int newIndex) {} 86 87 @Override 88 public void destroy() {} 89 90 @Override 91 public boolean isClosurePending(int tabId) { 92 return false; 93 } 94 95 @Override 96 public boolean closeTab(Tab tab, boolean animate, boolean uponExit, boolean canUndo) { 97 return false; 98 } 99 100 @Override 101 public TabList getComprehensiveModel() { 102 return this; 103 } 104 105 @Override 106 public void commitAllTabClosures() { 107 } 108 109 @Override 110 public void commitTabClosure(int tabId) { 111 } 112 113 @Override 114 public void cancelTabClosure(int tabId) { 115 } 116 117 @Override 118 public boolean supportsPendingClosures() { 119 return false; 120 } 121 122 @Override 123 public void addTab(Tab tab, int index, TabLaunchType type) { 124 assert false; 125 } 126 127 @Override 128 public void addObserver(TabModelObserver observer) { 129 } 130 131 @Override 132 public void removeObserver(TabModelObserver observer) { 133 } 134 135} 136