| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_TABS_TAB_STRIP_MODEL_H_ | 5 #ifndef CHROME_BROWSER_TABS_TAB_STRIP_MODEL_H_ |
| 6 #define CHROME_BROWSER_TABS_TAB_STRIP_MODEL_H_ | 6 #define CHROME_BROWSER_TABS_TAB_STRIP_MODEL_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/observer_list.h" | 10 #include "base/observer_list.h" |
| 11 #include "chrome/common/notification_registrar.h" | 11 #include "chrome/common/notification_registrar.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 40 // Add/RemoveObserver methods. | 40 // Add/RemoveObserver methods. |
| 41 // | 41 // |
| 42 //////////////////////////////////////////////////////////////////////////////// | 42 //////////////////////////////////////////////////////////////////////////////// |
| 43 class TabStripModelObserver { | 43 class TabStripModelObserver { |
| 44 public: | 44 public: |
| 45 // A new TabContents was inserted into the TabStripModel at the specified | 45 // A new TabContents was inserted into the TabStripModel at the specified |
| 46 // index. |foreground| is whether or not it was opened in the foreground | 46 // index. |foreground| is whether or not it was opened in the foreground |
| 47 // (selected). | 47 // (selected). |
| 48 virtual void TabInsertedAt(TabContents* contents, | 48 virtual void TabInsertedAt(TabContents* contents, |
| 49 int index, | 49 int index, |
| 50 bool foreground) {} | 50 bool foreground) { } |
| 51 | 51 |
| 52 // The specified TabContents at |index| is being closed (and eventually | 52 // The specified TabContents at |index| is being closed (and eventually |
| 53 // destroyed). | 53 // destroyed). |
| 54 virtual void TabClosingAt(TabContents* contents, int index) {} | 54 virtual void TabClosingAt(TabContents* contents, int index) { } |
| 55 | 55 |
| 56 // The specified TabContents at |index| is being detached, perhaps to be | 56 // The specified TabContents at |index| is being detached, perhaps to be |
| 57 // inserted in another TabStripModel. The implementer should take whatever | 57 // inserted in another TabStripModel. The implementer should take whatever |
| 58 // action is necessary to deal with the TabContents no longer being present. | 58 // action is necessary to deal with the TabContents no longer being present. |
| 59 virtual void TabDetachedAt(TabContents* contents, int index) {} | 59 virtual void TabDetachedAt(TabContents* contents, int index) { } |
| 60 | 60 |
| 61 // The selected TabContents is about to change from |old_contents| at |index|. | 61 // The selected TabContents is about to change from |old_contents| at |index|. |
| 62 // This gives observers a chance to prepare for an impending switch before it | 62 // This gives observers a chance to prepare for an impending switch before it |
| 63 // happens. | 63 // happens. |
| 64 virtual void TabDeselectedAt(TabContents* contents, int index) {} | 64 virtual void TabDeselectedAt(TabContents* contents, int index) { } |
| 65 | 65 |
| 66 // The selected TabContents changed from |old_contents| to |new_contents| at | 66 // The selected TabContents changed from |old_contents| to |new_contents| at |
| 67 // |index|. |user_gesture| specifies whether or not this was done by a user | 67 // |index|. |user_gesture| specifies whether or not this was done by a user |
| 68 // input event (e.g. clicking on a tab, keystroke) or as a side-effect of | 68 // input event (e.g. clicking on a tab, keystroke) or as a side-effect of |
| 69 // some other function. | 69 // some other function. |
| 70 virtual void TabSelectedAt(TabContents* old_contents, | 70 virtual void TabSelectedAt(TabContents* old_contents, |
| 71 TabContents* new_contents, | 71 TabContents* new_contents, |
| 72 int index, | 72 int index, |
| 73 bool user_gesture) {} | 73 bool user_gesture) { } |
| 74 | 74 |
| 75 // The specified TabContents at |from_index| was moved to |to_index|. If | 75 // The specified TabContents at |from_index| was moved to |to_index|. If |
| 76 // the pinned state of the tab is changing |pinned_state_changed| is true. | 76 // the pinned state of the tab is changing |pinned_state_changed| is true. |
| 77 virtual void TabMoved(TabContents* contents, | 77 virtual void TabMoved(TabContents* contents, |
| 78 int from_index, | 78 int from_index, |
| 79 int to_index, | 79 int to_index, |
| 80 bool pinned_state_changed) {} | 80 bool pinned_state_changed) { } |
| 81 | 81 |
| 82 // The specified TabContents at |index| changed in some way. |contents| may | 82 // The specified TabContents at |index| changed in some way. |contents| may |
| 83 // be an entirely different object and the old value is no longer available | 83 // be an entirely different object and the old value is no longer available |
| 84 // by the time this message is delivered. | 84 // by the time this message is delivered. |
| 85 // | 85 // |
| 86 // If only the loading state was updated, the loading_only flag should be | 86 // If only the loading state was updated, the loading_only flag should be |
| 87 // specified. The tab model will update only the throbber, loading status, | 87 // specified. The tab model will update only the throbber, loading status, |
| 88 // and crashed state. | 88 // and crashed state. |
| 89 // | 89 // |
| 90 // If other things change, set this flag to false to update all state, | 90 // If other things change, set this flag to false to update all state, |
| 91 // including the title and favicon. This allows us to start/stop throbbing | 91 // including the title and favicon. This allows us to start/stop throbbing |
| 92 // without updating the title (which may be an ugly URL if the real title | 92 // without updating the title (which may be an ugly URL if the real title |
| 93 // hasn't come in yet). | 93 // hasn't come in yet). |
| 94 virtual void TabChangedAt(TabContents* contents, int index, | 94 virtual void TabChangedAt(TabContents* contents, int index, |
| 95 bool loading_only) {} | 95 bool loading_only) { } |
| 96 | 96 |
| 97 // Invoked when the pinned state of a tab changes. | 97 // Invoked when the pinned state of a tab changes. |
| 98 // NOTE: this is only invoked if the tab doesn't move as a result of its | 98 // NOTE: this is only invoked if the tab doesn't move as a result of its |
| 99 // pinned state changing. If the tab moves as a result, the observer is | 99 // pinned state changing. If the tab moves as a result, the observer is |
| 100 // notified by way of the TabMoved method with |pinned_state_changed| true. | 100 // notified by way of the TabMoved method with |pinned_state_changed| true. |
| 101 virtual void TabPinnedStateChanged(TabContents* contents, int index) {} | 101 virtual void TabPinnedStateChanged(TabContents* contents, int index) { } |
| 102 | 102 |
| 103 // The TabStripModel now no longer has any "significant" (user created or | 103 // The TabStripModel now no longer has any "significant" (user created or |
| 104 // user manipulated) tabs. The implementer may use this as a trigger to try | 104 // user manipulated) tabs. The implementer may use this as a trigger to try |
| 105 // and close the window containing the TabStripModel, for example... | 105 // and close the window containing the TabStripModel, for example... |
| 106 virtual void TabStripEmpty() {} | 106 virtual void TabStripEmpty() { } |
| 107 | |
| 108 protected: | |
| 109 ~TabStripModelObserver() {} | |
| 110 }; | 107 }; |
| 111 | 108 |
| 112 /////////////////////////////////////////////////////////////////////////////// | 109 /////////////////////////////////////////////////////////////////////////////// |
| 113 // | 110 // |
| 114 // TabStripModelDelegate | 111 // TabStripModelDelegate |
| 115 // | 112 // |
| 116 // A delegate interface that the TabStripModel uses to perform work that it | 113 // A delegate interface that the TabStripModel uses to perform work that it |
| 117 // can't do itself, such as obtain a container HWND for creating new | 114 // can't do itself, such as obtain a container HWND for creating new |
| 118 // TabContents, creating new TabStripModels for detached tabs, etc. | 115 // TabContents, creating new TabStripModels for detached tabs, etc. |
| 119 // | 116 // |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 virtual bool RunUnloadListenerBeforeClosing(TabContents* contents) = 0; | 192 virtual bool RunUnloadListenerBeforeClosing(TabContents* contents) = 0; |
| 196 | 193 |
| 197 // Returns true if a tab can be restored. | 194 // Returns true if a tab can be restored. |
| 198 virtual bool CanRestoreTab() = 0; | 195 virtual bool CanRestoreTab() = 0; |
| 199 | 196 |
| 200 // Restores the last closed tab if CanRestoreTab would return true. | 197 // Restores the last closed tab if CanRestoreTab would return true. |
| 201 virtual void RestoreTab() = 0; | 198 virtual void RestoreTab() = 0; |
| 202 | 199 |
| 203 // Returns whether some contents can be closed. | 200 // Returns whether some contents can be closed. |
| 204 virtual bool CanCloseContentsAt(int index) = 0; | 201 virtual bool CanCloseContentsAt(int index) = 0; |
| 205 | |
| 206 protected: | |
| 207 ~TabStripModelDelegate() {} | |
| 208 }; | 202 }; |
| 209 | 203 |
| 210 //////////////////////////////////////////////////////////////////////////////// | 204 //////////////////////////////////////////////////////////////////////////////// |
| 211 // | 205 // |
| 212 // TabStripModel | 206 // TabStripModel |
| 213 // | 207 // |
| 214 // A model & low level controller of a Browser Window tabstrip. Holds a vector | 208 // A model & low level controller of a Browser Window tabstrip. Holds a vector |
| 215 // of TabContents, and provides an API for adding, removing and shuffling | 209 // of TabContents, and provides an API for adding, removing and shuffling |
| 216 // them, as well as a higher level API for doing specific Browser-related | 210 // them, as well as a higher level API for doing specific Browser-related |
| 217 // tasks like adding new Tabs from just a URL, etc. | 211 // tasks like adding new Tabs from just a URL, etc. |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 typedef ObserverList<TabStripModelObserver> TabStripModelObservers; | 622 typedef ObserverList<TabStripModelObserver> TabStripModelObservers; |
| 629 TabStripModelObservers observers_; | 623 TabStripModelObservers observers_; |
| 630 | 624 |
| 631 // A scoped container for notification registries. | 625 // A scoped container for notification registries. |
| 632 NotificationRegistrar registrar_; | 626 NotificationRegistrar registrar_; |
| 633 | 627 |
| 634 DISALLOW_COPY_AND_ASSIGN(TabStripModel); | 628 DISALLOW_COPY_AND_ASSIGN(TabStripModel); |
| 635 }; | 629 }; |
| 636 | 630 |
| 637 #endif // CHROME_BROWSER_TABS_TAB_STRIP_MODEL_H_ | 631 #endif // CHROME_BROWSER_TABS_TAB_STRIP_MODEL_H_ |
| OLD | NEW |