| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_EXTENSIONS_API_TABS_TABS_EVENT_ROUTER_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_EVENT_ROUTER_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_EVENT_ROUTER_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_EVENT_ROUTER_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 // - distinguish between tab creation and tab insertion | 141 // - distinguish between tab creation and tab insertion |
| 142 // - not send tab-detached after tab-removed | 142 // - not send tab-detached after tab-removed |
| 143 // - reduce the "noise" of TabChangedAt() when sending events to extensions | 143 // - reduce the "noise" of TabChangedAt() when sending events to extensions |
| 144 // - remember last muted and audible states to know if there was a change | 144 // - remember last muted and audible states to know if there was a change |
| 145 class TabEntry { | 145 class TabEntry { |
| 146 public: | 146 public: |
| 147 // Create a TabEntry associated with, and tracking state changes to, | 147 // Create a TabEntry associated with, and tracking state changes to, |
| 148 // |contents|. | 148 // |contents|. |
| 149 explicit TabEntry(content::WebContents* contents); | 149 explicit TabEntry(content::WebContents* contents); |
| 150 | 150 |
| 151 // Indicate via a list of key/value pairs if a tab is loading based on its | 151 // Indicate via a list of key/value pairs that being changed when called. |
| 152 // WebContents. Whether the state has changed or not is used to determine | 152 scoped_ptr<base::DictionaryValue> Update(); |
| 153 // if events needs to be sent to extensions during processing of | |
| 154 // TabChangedAt(). If this method indicates that a tab should "hold" a | |
| 155 // state-change to "loading", the DidNavigate() method should eventually | |
| 156 // send a similar message to undo it. If false, the returned key/value | |
| 157 // pairs list is empty. | |
| 158 scoped_ptr<base::DictionaryValue> UpdateLoadState(); | |
| 159 | |
| 160 // Indicate via a list of key/value pairs that a tab load has resulted in a | |
| 161 // navigation and the destination url is available for inspection. The list | |
| 162 // is empty if no updates should be sent. | |
| 163 scoped_ptr<base::DictionaryValue> DidNavigate(); | |
| 164 | 153 |
| 165 // Update the audible and muted states and return whether they were changed | 154 // Update the audible and muted states and return whether they were changed |
| 166 bool SetAudible(bool new_val); | 155 bool SetAudible(bool new_val); |
| 167 bool SetMuted(bool new_val); | 156 bool SetMuted(bool new_val); |
| 168 | 157 |
| 169 content::WebContents* web_contents() { return contents_; } | 158 content::WebContents* web_contents() { return contents_; } |
| 170 | 159 |
| 171 private: | 160 private: |
| 172 content::WebContents* contents_; | 161 content::WebContents* contents_; |
| 173 | 162 |
| 174 // Whether we are waiting to fire the 'complete' status change. This will | |
| 175 // occur the first time the WebContents stops loading after the | |
| 176 // NAV_ENTRY_COMMITTED was fired. The tab may go back into and out of the | |
| 177 // loading state subsequently, but we will ignore those changes. | |
| 178 bool complete_waiting_on_load_; | |
| 179 | |
| 180 // Previous audible and muted states | 163 // Previous audible and muted states |
| 181 bool was_audible_; | 164 bool was_audible_; |
| 182 bool was_muted_; | 165 bool was_muted_; |
| 183 | 166 |
| 184 GURL url_; | 167 GURL url_; |
| 168 |
| 169 // Indicate the last 'status' value. |
| 170 std::string status_; |
| 185 }; | 171 }; |
| 186 | 172 |
| 187 // Gets the TabEntry for the given |contents|. Returns linked_ptr<TabEntry> | 173 // Gets the TabEntry for the given |contents|. Returns linked_ptr<TabEntry> |
| 188 // if found, NULL if not. | 174 // if found, NULL if not. |
| 189 linked_ptr<TabEntry> GetTabEntry(content::WebContents* contents); | 175 linked_ptr<TabEntry> GetTabEntry(content::WebContents* contents); |
| 190 | 176 |
| 191 using TabEntryMap = std::map<int, linked_ptr<TabEntry>>; | 177 using TabEntryMap = std::map<int, linked_ptr<TabEntry>>; |
| 192 TabEntryMap tab_entries_; | 178 TabEntryMap tab_entries_; |
| 193 | 179 |
| 194 // The main profile that owns this event router. | 180 // The main profile that owns this event router. |
| 195 Profile* profile_; | 181 Profile* profile_; |
| 196 | 182 |
| 197 ScopedObserver<favicon::FaviconDriver, TabsEventRouter> | 183 ScopedObserver<favicon::FaviconDriver, TabsEventRouter> |
| 198 favicon_scoped_observer_; | 184 favicon_scoped_observer_; |
| 199 | 185 |
| 200 DISALLOW_COPY_AND_ASSIGN(TabsEventRouter); | 186 DISALLOW_COPY_AND_ASSIGN(TabsEventRouter); |
| 201 }; | 187 }; |
| 202 | 188 |
| 203 } // namespace extensions | 189 } // namespace extensions |
| 204 | 190 |
| 205 #endif // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_EVENT_ROUTER_H_ | 191 #endif // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_EVENT_ROUTER_H_ |
| OLD | NEW |