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