Index: chrome/browser/extensions/api/tabs/tabs_event_router.cc |
diff --git a/chrome/browser/extensions/browser_event_router.cc b/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
similarity index 63% |
rename from chrome/browser/extensions/browser_event_router.cc |
rename to chrome/browser/extensions/api/tabs/tabs_event_router.cc |
index c9a9b07f03e9755a0cc565fbb709a3ff8456d069..963ca605a3fc0b87d525dc18930ef3f9b08c82f5 100644 |
--- a/chrome/browser/extensions/browser_event_router.cc |
+++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/extensions/browser_event_router.h" |
+#include "chrome/browser/extensions/api/tabs/tabs_event_router.h" |
#include "base/json/json_writer.h" |
#include "base/values.h" |
@@ -10,10 +10,8 @@ |
#include "chrome/browser/extensions/api/tabs/tabs_constants.h" |
#include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" |
#include "chrome/browser/extensions/api/tabs/windows_event_router.h" |
-#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/browser/extensions/extension_tab_util.h" |
-#include "chrome/browser/extensions/window_controller.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_iterator.h" |
@@ -27,21 +25,42 @@ |
#include "content/public/browser/notification_types.h" |
#include "content/public/browser/web_contents.h" |
-namespace tab_keys = extensions::tabs_constants; |
- |
+using base::DictionaryValue; |
+using base::ListValue; |
+using base::FundamentalValue; |
using content::NavigationController; |
using content::WebContents; |
namespace extensions { |
+namespace { |
+ |
namespace tabs = api::tabs; |
-BrowserEventRouter::TabEntry::TabEntry() |
- : complete_waiting_on_load_(false), |
- url_() { |
+void WillDispatchTabUpdatedEvent(WebContents* contents, |
+ const DictionaryValue* changed_properties, |
+ Profile* profile, |
+ const Extension* extension, |
+ ListValue* event_args) { |
+ // Overwrite the second argument with the appropriate properties dictionary, |
+ // depending on extension permissions. |
+ DictionaryValue* properties_value = changed_properties->DeepCopy(); |
+ ExtensionTabUtil::ScrubTabValueForExtension(contents, |
+ extension, |
+ properties_value); |
+ event_args->Set(1, properties_value); |
+ |
+ // Overwrite the third arg with our tab value as seen by this extension. |
+ event_args->Set(2, ExtensionTabUtil::CreateTabValue(contents, extension)); |
+} |
+ |
+} // namespace |
+ |
+TabsEventRouter::TabEntry::TabEntry() : complete_waiting_on_load_(false), |
+ url_() { |
} |
-DictionaryValue* BrowserEventRouter::TabEntry::UpdateLoadState( |
+DictionaryValue* TabsEventRouter::TabEntry::UpdateLoadState( |
const WebContents* contents) { |
// The tab may go in & out of loading (for instance if iframes navigate). |
// We only want to respond to the first change from loading to !loading after |
@@ -52,29 +71,28 @@ DictionaryValue* BrowserEventRouter::TabEntry::UpdateLoadState( |
// Send "complete" state change. |
complete_waiting_on_load_ = false; |
DictionaryValue* changed_properties = new DictionaryValue(); |
- changed_properties->SetString(tab_keys::kStatusKey, |
- tab_keys::kStatusValueComplete); |
+ changed_properties->SetString(tabs_constants::kStatusKey, |
+ tabs_constants::kStatusValueComplete); |
return changed_properties; |
} |
-DictionaryValue* BrowserEventRouter::TabEntry::DidNavigate( |
+DictionaryValue* TabsEventRouter::TabEntry::DidNavigate( |
const WebContents* contents) { |
// Send "loading" state change. |
complete_waiting_on_load_ = true; |
DictionaryValue* changed_properties = new DictionaryValue(); |
- changed_properties->SetString(tab_keys::kStatusKey, |
- tab_keys::kStatusValueLoading); |
+ changed_properties->SetString(tabs_constants::kStatusKey, |
+ tabs_constants::kStatusValueLoading); |
if (contents->GetURL() != url_) { |
url_ = contents->GetURL(); |
- changed_properties->SetString(tab_keys::kUrlKey, url_.spec()); |
+ changed_properties->SetString(tabs_constants::kUrlKey, url_.spec()); |
} |
return changed_properties; |
} |
-BrowserEventRouter::BrowserEventRouter(Profile* profile) |
- : profile_(profile) { |
+TabsEventRouter::TabsEventRouter(Profile* profile) : profile_(profile) { |
DCHECK(!profile->IsOffTheRecord()); |
BrowserList::AddObserver(this); |
@@ -96,15 +114,15 @@ BrowserEventRouter::BrowserEventRouter(Profile* profile) |
} |
} |
-BrowserEventRouter::~BrowserEventRouter() { |
+TabsEventRouter::~TabsEventRouter() { |
BrowserList::RemoveObserver(this); |
} |
-void BrowserEventRouter::OnBrowserAdded(Browser* browser) { |
+void TabsEventRouter::OnBrowserAdded(Browser* browser) { |
RegisterForBrowserNotifications(browser); |
} |
-void BrowserEventRouter::RegisterForBrowserNotifications(Browser* browser) { |
+void TabsEventRouter::RegisterForBrowserNotifications(Browser* browser) { |
if (!profile_->IsSameProfile(browser->profile())) |
return; |
// Start listening to TabStripModel events for this browser. |
@@ -116,7 +134,7 @@ void BrowserEventRouter::RegisterForBrowserNotifications(Browser* browser) { |
} |
} |
-void BrowserEventRouter::RegisterForTabNotifications(WebContents* contents) { |
+void TabsEventRouter::RegisterForTabNotifications(WebContents* contents) { |
registrar_.Add( |
this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
content::Source<NavigationController>(&contents->GetController())); |
@@ -132,7 +150,7 @@ void BrowserEventRouter::RegisterForTabNotifications(WebContents* contents) { |
content::Source<WebContents>(contents)); |
} |
-void BrowserEventRouter::UnregisterForTabNotifications(WebContents* contents) { |
+void TabsEventRouter::UnregisterForTabNotifications(WebContents* contents) { |
registrar_.Remove(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
content::Source<NavigationController>(&contents->GetController())); |
registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
@@ -141,7 +159,7 @@ void BrowserEventRouter::UnregisterForTabNotifications(WebContents* contents) { |
content::Source<WebContents>(contents)); |
} |
-void BrowserEventRouter::OnBrowserRemoved(Browser* browser) { |
+void TabsEventRouter::OnBrowserRemoved(Browser* browser) { |
if (!profile_->IsSameProfile(browser->profile())) |
return; |
@@ -149,7 +167,7 @@ void BrowserEventRouter::OnBrowserRemoved(Browser* browser) { |
browser->tab_strip_model()->RemoveObserver(this); |
} |
-void BrowserEventRouter::OnBrowserSetLastActive(Browser* browser) { |
+void TabsEventRouter::OnBrowserSetLastActive(Browser* browser) { |
TabsWindowsAPI* tabs_window_api = TabsWindowsAPI::Get(profile_); |
if (tabs_window_api) { |
tabs_window_api->windows_event_router()->OnActiveWindowChanged( |
@@ -161,19 +179,19 @@ static void WillDispatchTabCreatedEvent(WebContents* contents, |
bool active, |
Profile* profile, |
const Extension* extension, |
- base::ListValue* event_args) { |
+ ListValue* event_args) { |
DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( |
contents, extension); |
event_args->Clear(); |
event_args->Append(tab_value); |
- tab_value->SetBoolean(tab_keys::kSelectedKey, active); |
+ tab_value->SetBoolean(tabs_constants::kSelectedKey, active); |
} |
-void BrowserEventRouter::TabCreatedAt(WebContents* contents, |
- int index, |
- bool active) { |
+void TabsEventRouter::TabCreatedAt(WebContents* contents, |
+ int index, |
+ bool active) { |
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
+ scoped_ptr<ListValue> args(new ListValue); |
scoped_ptr<Event> event(new Event(tabs::OnCreated::kEventName, args.Pass())); |
event->restrict_to_profile = profile; |
event->user_gesture = EventRouter::USER_GESTURE_NOT_ENABLED; |
@@ -184,7 +202,7 @@ void BrowserEventRouter::TabCreatedAt(WebContents* contents, |
RegisterForTabNotifications(contents); |
} |
-void BrowserEventRouter::TabInsertedAt(WebContents* contents, |
+void TabsEventRouter::TabInsertedAt(WebContents* contents, |
int index, |
bool active) { |
// If tab is new, send created event. |
@@ -196,14 +214,15 @@ void BrowserEventRouter::TabInsertedAt(WebContents* contents, |
return; |
} |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
- args->Append(new base::FundamentalValue(tab_id)); |
+ scoped_ptr<ListValue> args(new ListValue); |
+ args->Append(new FundamentalValue(tab_id)); |
DictionaryValue* object_args = new DictionaryValue(); |
- object_args->Set(tab_keys::kNewWindowIdKey, new base::FundamentalValue( |
- ExtensionTabUtil::GetWindowIdOfTab(contents))); |
- object_args->Set(tab_keys::kNewPositionKey, new base::FundamentalValue( |
- index)); |
+ object_args->Set(tabs_constants::kNewWindowIdKey, |
+ new FundamentalValue( |
+ ExtensionTabUtil::GetWindowIdOfTab(contents))); |
+ object_args->Set(tabs_constants::kNewPositionKey, |
+ new FundamentalValue(index)); |
args->Append(object_args); |
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
@@ -211,45 +230,50 @@ void BrowserEventRouter::TabInsertedAt(WebContents* contents, |
EventRouter::USER_GESTURE_UNKNOWN); |
} |
-void BrowserEventRouter::TabDetachedAt(WebContents* contents, int index) { |
+void TabsEventRouter::TabDetachedAt(WebContents* contents, int index) { |
if (!GetTabEntry(contents)) { |
// The tab was removed. Don't send detach event. |
return; |
} |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
+ scoped_ptr<ListValue> args(new ListValue); |
args->Append( |
- new base::FundamentalValue(ExtensionTabUtil::GetTabId(contents))); |
+ new FundamentalValue(ExtensionTabUtil::GetTabId(contents))); |
DictionaryValue* object_args = new DictionaryValue(); |
- object_args->Set(tab_keys::kOldWindowIdKey, new base::FundamentalValue( |
- ExtensionTabUtil::GetWindowIdOfTab(contents))); |
- object_args->Set(tab_keys::kOldPositionKey, new base::FundamentalValue( |
- index)); |
+ object_args->Set(tabs_constants::kOldWindowIdKey, |
+ new FundamentalValue( |
+ ExtensionTabUtil::GetWindowIdOfTab(contents))); |
+ object_args->Set(tabs_constants::kOldPositionKey, |
+ new FundamentalValue(index)); |
args->Append(object_args); |
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
- DispatchEvent(profile, tabs::OnDetached::kEventName, args.Pass(), |
+ DispatchEvent(profile, |
+ tabs::OnDetached::kEventName, |
+ args.Pass(), |
EventRouter::USER_GESTURE_UNKNOWN); |
} |
-void BrowserEventRouter::TabClosingAt(TabStripModel* tab_strip_model, |
- WebContents* contents, |
- int index) { |
+void TabsEventRouter::TabClosingAt(TabStripModel* tab_strip_model, |
+ WebContents* contents, |
+ int index) { |
int tab_id = ExtensionTabUtil::GetTabId(contents); |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
- args->Append(new base::FundamentalValue(tab_id)); |
+ scoped_ptr<ListValue> args(new ListValue); |
+ args->Append(new FundamentalValue(tab_id)); |
DictionaryValue* object_args = new DictionaryValue(); |
- object_args->SetInteger(tab_keys::kWindowIdKey, |
+ object_args->SetInteger(tabs_constants::kWindowIdKey, |
ExtensionTabUtil::GetWindowIdOfTab(contents)); |
- object_args->SetBoolean(tab_keys::kWindowClosing, |
+ object_args->SetBoolean(tabs_constants::kWindowClosing, |
tab_strip_model->closing_all()); |
args->Append(object_args); |
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
- DispatchEvent(profile, tabs::OnRemoved::kEventName, args.Pass(), |
+ DispatchEvent(profile, |
+ tabs::OnRemoved::kEventName, |
+ args.Pass(), |
EventRouter::USER_GESTURE_UNKNOWN); |
int removed_count = tab_entries_.erase(tab_id); |
@@ -258,17 +282,18 @@ void BrowserEventRouter::TabClosingAt(TabStripModel* tab_strip_model, |
UnregisterForTabNotifications(contents); |
} |
-void BrowserEventRouter::ActiveTabChanged(WebContents* old_contents, |
- WebContents* new_contents, |
- int index, |
- int reason) { |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
+void TabsEventRouter::ActiveTabChanged(WebContents* old_contents, |
+ WebContents* new_contents, |
+ int index, |
+ int reason) { |
+ scoped_ptr<ListValue> args(new ListValue); |
int tab_id = ExtensionTabUtil::GetTabId(new_contents); |
- args->Append(new base::FundamentalValue(tab_id)); |
+ args->Append(new FundamentalValue(tab_id)); |
DictionaryValue* object_args = new DictionaryValue(); |
- object_args->Set(tab_keys::kWindowIdKey, new base::FundamentalValue( |
- ExtensionTabUtil::GetWindowIdOfTab(new_contents))); |
+ object_args->Set(tabs_constants::kWindowIdKey, |
+ new FundamentalValue( |
+ ExtensionTabUtil::GetWindowIdOfTab(new_contents))); |
args->Append(object_args); |
// The onActivated event replaced onActiveChanged and onSelectionChanged. The |
@@ -279,23 +304,28 @@ void BrowserEventRouter::ActiveTabChanged(WebContents* old_contents, |
reason & CHANGE_REASON_USER_GESTURE |
? EventRouter::USER_GESTURE_ENABLED |
: EventRouter::USER_GESTURE_NOT_ENABLED; |
- DispatchEvent(profile, tabs::OnSelectionChanged::kEventName, |
- scoped_ptr<base::ListValue>(args->DeepCopy()), gesture); |
- DispatchEvent(profile, tabs::OnActiveChanged::kEventName, |
- scoped_ptr<base::ListValue>(args->DeepCopy()), gesture); |
+ DispatchEvent(profile, |
+ tabs::OnSelectionChanged::kEventName, |
+ scoped_ptr<ListValue>(args->DeepCopy()), |
+ gesture); |
+ DispatchEvent(profile, |
+ tabs::OnActiveChanged::kEventName, |
+ scoped_ptr<ListValue>(args->DeepCopy()), |
+ gesture); |
// The onActivated event takes one argument: {windowId, tabId}. |
args->Remove(0, NULL); |
- object_args->Set(tab_keys::kTabIdKey, new base::FundamentalValue(tab_id)); |
+ object_args->Set(tabs_constants::kTabIdKey, |
+ new FundamentalValue(tab_id)); |
DispatchEvent(profile, tabs::OnActivated::kEventName, args.Pass(), gesture); |
} |
-void BrowserEventRouter::TabSelectionChanged( |
+void TabsEventRouter::TabSelectionChanged( |
TabStripModel* tab_strip_model, |
const ui::ListSelectionModel& old_model) { |
ui::ListSelectionModel::SelectedIndices new_selection = |
tab_strip_model->selection_model().selected_indices(); |
- base::ListValue* all = new base::ListValue(); |
+ scoped_ptr<ListValue> all_tabs(new ListValue); |
for (size_t i = 0; i < new_selection.size(); ++i) { |
int index = new_selection[i]; |
@@ -303,53 +333,61 @@ void BrowserEventRouter::TabSelectionChanged( |
if (!contents) |
break; |
int tab_id = ExtensionTabUtil::GetTabId(contents); |
- all->Append(new base::FundamentalValue(tab_id)); |
+ all_tabs->Append(new FundamentalValue(tab_id)); |
} |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
- DictionaryValue* select_info = new DictionaryValue(); |
+ scoped_ptr<ListValue> args(new ListValue); |
+ scoped_ptr<DictionaryValue> select_info(new DictionaryValue); |
- select_info->Set(tab_keys::kWindowIdKey, new base::FundamentalValue( |
- ExtensionTabUtil::GetWindowIdOfTabStripModel(tab_strip_model))); |
+ select_info->Set( |
+ tabs_constants::kWindowIdKey, |
+ new FundamentalValue( |
+ ExtensionTabUtil::GetWindowIdOfTabStripModel(tab_strip_model))); |
- select_info->Set(tab_keys::kTabIdsKey, all); |
- args->Append(select_info); |
+ select_info->Set(tabs_constants::kTabIdsKey, all_tabs.release()); |
+ args->Append(select_info.release()); |
// The onHighlighted event replaced onHighlightChanged. |
Profile* profile = tab_strip_model->profile(); |
- DispatchEvent(profile, tabs::OnHighlightChanged::kEventName, |
- scoped_ptr<base::ListValue>(args->DeepCopy()), |
+ DispatchEvent(profile, |
+ tabs::OnHighlightChanged::kEventName, |
+ scoped_ptr<ListValue>(args->DeepCopy()), |
EventRouter::USER_GESTURE_UNKNOWN); |
- DispatchEvent(profile, tabs::OnHighlighted::kEventName, args.Pass(), |
+ DispatchEvent(profile, |
+ tabs::OnHighlighted::kEventName, |
+ args.Pass(), |
EventRouter::USER_GESTURE_UNKNOWN); |
} |
-void BrowserEventRouter::TabMoved(WebContents* contents, |
- int from_index, |
- int to_index) { |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
+void TabsEventRouter::TabMoved(WebContents* contents, |
+ int from_index, |
+ int to_index) { |
+ scoped_ptr<ListValue> args(new ListValue); |
args->Append( |
- new base::FundamentalValue(ExtensionTabUtil::GetTabId(contents))); |
+ new FundamentalValue(ExtensionTabUtil::GetTabId(contents))); |
DictionaryValue* object_args = new DictionaryValue(); |
- object_args->Set(tab_keys::kWindowIdKey, new base::FundamentalValue( |
- ExtensionTabUtil::GetWindowIdOfTab(contents))); |
- object_args->Set(tab_keys::kFromIndexKey, new base::FundamentalValue( |
- from_index)); |
- object_args->Set(tab_keys::kToIndexKey, new base::FundamentalValue( |
- to_index)); |
+ object_args->Set(tabs_constants::kWindowIdKey, |
+ new FundamentalValue( |
+ ExtensionTabUtil::GetWindowIdOfTab(contents))); |
+ object_args->Set(tabs_constants::kFromIndexKey, |
+ new FundamentalValue(from_index)); |
+ object_args->Set(tabs_constants::kToIndexKey, |
+ new FundamentalValue(to_index)); |
args->Append(object_args); |
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
- DispatchEvent(profile, tabs::OnMoved::kEventName, args.Pass(), |
+ DispatchEvent(profile, |
+ tabs::OnMoved::kEventName, |
+ args.Pass(), |
EventRouter::USER_GESTURE_UNKNOWN); |
} |
-void BrowserEventRouter::TabUpdated(WebContents* contents, bool did_navigate) { |
+void TabsEventRouter::TabUpdated(WebContents* contents, bool did_navigate) { |
TabEntry* entry = GetTabEntry(contents); |
scoped_ptr<DictionaryValue> changed_properties; |
- DCHECK(entry); |
+ CHECK(entry); |
if (did_navigate) |
changed_properties.reset(entry->DidNavigate(contents)); |
@@ -360,28 +398,25 @@ void BrowserEventRouter::TabUpdated(WebContents* contents, bool did_navigate) { |
DispatchTabUpdatedEvent(contents, changed_properties.Pass()); |
} |
-void BrowserEventRouter::FaviconUrlUpdated(WebContents* contents, |
- const bool* icon_url_changed) { |
- if (!icon_url_changed || !*icon_url_changed) |
- return; |
+void TabsEventRouter::FaviconUrlUpdated(WebContents* contents) { |
content::NavigationEntry* entry = |
contents->GetController().GetVisibleEntry(); |
if (!entry || !entry->GetFavicon().valid) |
return; |
- scoped_ptr<DictionaryValue> changed_properties(new DictionaryValue()); |
+ scoped_ptr<DictionaryValue> changed_properties(new DictionaryValue); |
changed_properties->SetString( |
- tab_keys::kFaviconUrlKey, |
+ tabs_constants::kFaviconUrlKey, |
entry->GetFavicon().url.possibly_invalid_spec()); |
DispatchTabUpdatedEvent(contents, changed_properties.Pass()); |
} |
-void BrowserEventRouter::DispatchEvent( |
+void TabsEventRouter::DispatchEvent( |
Profile* profile, |
const char* event_name, |
- scoped_ptr<base::ListValue> args, |
+ scoped_ptr<ListValue> args, |
EventRouter::UserGestureState user_gesture) { |
if (!profile_->IsSameProfile(profile) || |
- !extensions::ExtensionSystem::Get(profile)->event_router()) |
+ !ExtensionSystem::Get(profile)->event_router()) |
return; |
scoped_ptr<Event> event(new Event(event_name, args.Pass())); |
@@ -390,45 +425,28 @@ void BrowserEventRouter::DispatchEvent( |
ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); |
} |
-void BrowserEventRouter::DispatchSimpleBrowserEvent( |
+void TabsEventRouter::DispatchSimpleBrowserEvent( |
Profile* profile, const int window_id, const char* event_name) { |
if (!profile_->IsSameProfile(profile)) |
return; |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
- args->Append(new base::FundamentalValue(window_id)); |
+ scoped_ptr<ListValue> args(new ListValue); |
+ args->Append(new FundamentalValue(window_id)); |
- DispatchEvent(profile, event_name, args.Pass(), |
+ DispatchEvent(profile, |
+ event_name, |
+ args.Pass(), |
EventRouter::USER_GESTURE_UNKNOWN); |
} |
-static void WillDispatchTabUpdatedEvent( |
- WebContents* contents, |
- const DictionaryValue* changed_properties, |
- Profile* profile, |
- const Extension* extension, |
- base::ListValue* event_args) { |
- // Overwrite the second argument with the appropriate properties dictionary, |
- // depending on extension permissions. |
- DictionaryValue* properties_value = changed_properties->DeepCopy(); |
- ExtensionTabUtil::ScrubTabValueForExtension(contents, extension, |
- properties_value); |
- event_args->Set(1, properties_value); |
- |
- // Overwrite the third arg with our tab value as seen by this extension. |
- DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( |
- contents, extension); |
- event_args->Set(2, tab_value); |
-} |
- |
-void BrowserEventRouter::DispatchTabUpdatedEvent( |
+void TabsEventRouter::DispatchTabUpdatedEvent( |
WebContents* contents, scoped_ptr<DictionaryValue> changed_properties) { |
DCHECK(changed_properties); |
DCHECK(contents); |
// The state of the tab (as seen from the extension point of view) has |
// changed. Send a notification to the extension. |
- scoped_ptr<base::ListValue> args_base(new base::ListValue()); |
+ scoped_ptr<ListValue> args_base(new ListValue); |
// First arg: The id of the tab that changed. |
args_base->AppendInteger(ExtensionTabUtil::GetTabId(contents)); |
@@ -441,17 +459,18 @@ void BrowserEventRouter::DispatchTabUpdatedEvent( |
// WillDispatchTabUpdatedEvent. |
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
- scoped_ptr<Event> event(new Event(tabs::OnUpdated::kEventName, |
- args_base.Pass())); |
+ scoped_ptr<Event> event( |
+ new Event(tabs::OnUpdated::kEventName, args_base.Pass())); |
event->restrict_to_profile = profile; |
event->user_gesture = EventRouter::USER_GESTURE_NOT_ENABLED; |
event->will_dispatch_callback = |
base::Bind(&WillDispatchTabUpdatedEvent, |
- contents, changed_properties.get()); |
+ contents, |
+ changed_properties.get()); |
ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); |
} |
-BrowserEventRouter::TabEntry* BrowserEventRouter::GetTabEntry( |
+TabsEventRouter::TabEntry* TabsEventRouter::GetTabEntry( |
const WebContents* contents) { |
int tab_id = ExtensionTabUtil::GetTabId(contents); |
std::map<int, TabEntry>::iterator i = tab_entries_.find(tab_id); |
@@ -460,9 +479,9 @@ BrowserEventRouter::TabEntry* BrowserEventRouter::GetTabEntry( |
return &i->second; |
} |
-void BrowserEventRouter::Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
+void TabsEventRouter::Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) { |
if (type == content::NOTIFICATION_NAV_ENTRY_COMMITTED) { |
NavigationController* source_controller = |
content::Source<NavigationController>(source).ptr(); |
@@ -477,31 +496,31 @@ void BrowserEventRouter::Observe(int type, |
registrar_.Remove(this, chrome::NOTIFICATION_FAVICON_UPDATED, |
content::Source<WebContents>(contents)); |
} else if (type == chrome::NOTIFICATION_FAVICON_UPDATED) { |
- WebContents* contents = content::Source<WebContents>(source).ptr(); |
- const bool* icon_url_changed = content::Details<bool>(details).ptr(); |
- FaviconUrlUpdated(contents, icon_url_changed); |
+ bool icon_url_changed = *content::Details<bool>(details).ptr(); |
+ if (icon_url_changed) |
+ FaviconUrlUpdated(content::Source<WebContents>(source).ptr()); |
} else { |
NOTREACHED(); |
} |
} |
-void BrowserEventRouter::TabChangedAt(WebContents* contents, |
- int index, |
- TabChangeType change_type) { |
+void TabsEventRouter::TabChangedAt(WebContents* contents, |
+ int index, |
+ TabChangeType change_type) { |
TabUpdated(contents, false); |
} |
-void BrowserEventRouter::TabReplacedAt(TabStripModel* tab_strip_model, |
- WebContents* old_contents, |
- WebContents* new_contents, |
- int index) { |
+void TabsEventRouter::TabReplacedAt(TabStripModel* tab_strip_model, |
+ WebContents* old_contents, |
+ WebContents* new_contents, |
+ int index) { |
// Notify listeners that the next tabs closing or being added are due to |
// WebContents being swapped. |
const int new_tab_id = ExtensionTabUtil::GetTabId(new_contents); |
const int old_tab_id = ExtensionTabUtil::GetTabId(old_contents); |
- scoped_ptr<base::ListValue> args(new base::ListValue()); |
- args->Append(new base::FundamentalValue(new_tab_id)); |
- args->Append(new base::FundamentalValue(old_tab_id)); |
+ scoped_ptr<ListValue> args(new ListValue); |
+ args->Append(new FundamentalValue(new_tab_id)); |
+ args->Append(new FundamentalValue(old_tab_id)); |
DispatchEvent(Profile::FromBrowserContext(new_contents->GetBrowserContext()), |
tabs::OnReplaced::kEventName, |
@@ -519,19 +538,16 @@ void BrowserEventRouter::TabReplacedAt(TabStripModel* tab_strip_model, |
} |
} |
-void BrowserEventRouter::TabPinnedStateChanged(WebContents* contents, |
- int index) { |
+void TabsEventRouter::TabPinnedStateChanged(WebContents* contents, int index) { |
TabStripModel* tab_strip = NULL; |
int tab_index; |
if (ExtensionTabUtil::GetTabStripModel(contents, &tab_strip, &tab_index)) { |
scoped_ptr<DictionaryValue> changed_properties(new DictionaryValue()); |
- changed_properties->SetBoolean(tab_keys::kPinnedKey, |
+ changed_properties->SetBoolean(tabs_constants::kPinnedKey, |
tab_strip->IsTabPinned(tab_index)); |
DispatchTabUpdatedEvent(contents, changed_properties.Pass()); |
} |
} |
-void BrowserEventRouter::TabStripEmpty() {} |
- |
} // namespace extensions |