| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "chrome/browser/extensions/extension_browser_event_router.h" | 5 #include "chrome/browser/extensions/extension_browser_event_router.h" |
| 6 | 6 |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/browser.h" | 9 #include "chrome/browser/browser.h" |
| 10 #include "chrome/browser/profile.h" | 10 #include "chrome/browser/profile.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 | 86 |
| 87 static void DispatchEvent(Profile* profile, | 87 static void DispatchEvent(Profile* profile, |
| 88 const char* event_name, | 88 const char* event_name, |
| 89 const std::string json_args) { | 89 const std::string json_args) { |
| 90 if (profile->GetExtensionMessageService()) { | 90 if (profile->GetExtensionMessageService()) { |
| 91 profile->GetExtensionMessageService()-> | 91 profile->GetExtensionMessageService()-> |
| 92 DispatchEventToRenderers(event_name, json_args); | 92 DispatchEventToRenderers(event_name, json_args); |
| 93 } | 93 } |
| 94 } | 94 } |
| 95 | 95 |
| 96 static void DispatchEventWithTab(Profile* profile, |
| 97 const char* event_name, |
| 98 const TabContents* tab_contents) { |
| 99 ListValue args; |
| 100 args.Append(ExtensionTabUtil::CreateTabValue(tab_contents)); |
| 101 std::string json_args; |
| 102 base::JSONWriter::Write(&args, false, &json_args); |
| 103 DispatchEvent(profile, event_name, json_args); |
| 104 } |
| 105 |
| 96 static void DispatchSimpleBrowserEvent(Profile* profile, | 106 static void DispatchSimpleBrowserEvent(Profile* profile, |
| 97 const int window_id, | 107 const int window_id, |
| 98 const char* event_name) { | 108 const char* event_name) { |
| 99 ListValue args; | 109 ListValue args; |
| 100 args.Append(Value::CreateIntegerValue(window_id)); | 110 args.Append(Value::CreateIntegerValue(window_id)); |
| 101 | 111 |
| 102 std::string json_args; | 112 std::string json_args; |
| 103 base::JSONWriter::Write(&args, false, &json_args); | 113 base::JSONWriter::Write(&args, false, &json_args); |
| 104 | 114 |
| 105 DispatchEvent(profile, event_name, json_args); | 115 DispatchEvent(profile, event_name, json_args); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 void ExtensionBrowserEventRouter::OnBrowserSetLastActive( | 207 void ExtensionBrowserEventRouter::OnBrowserSetLastActive( |
| 198 const Browser* browser) { | 208 const Browser* browser) { |
| 199 DispatchSimpleBrowserEvent(browser->profile(), | 209 DispatchSimpleBrowserEvent(browser->profile(), |
| 200 ExtensionTabUtil::GetWindowId(browser), | 210 ExtensionTabUtil::GetWindowId(browser), |
| 201 events::kOnWindowFocusedChanged); | 211 events::kOnWindowFocusedChanged); |
| 202 } | 212 } |
| 203 | 213 |
| 204 void ExtensionBrowserEventRouter::TabCreatedAt(TabContents* contents, | 214 void ExtensionBrowserEventRouter::TabCreatedAt(TabContents* contents, |
| 205 int index, | 215 int index, |
| 206 bool foreground) { | 216 bool foreground) { |
| 207 ListValue args; | 217 DispatchEventWithTab(contents->profile(), events::kOnTabCreated, contents); |
| 208 args.Append(ExtensionTabUtil::CreateTabValue(contents)); | |
| 209 std::string json_args; | |
| 210 base::JSONWriter::Write(&args, false, &json_args); | |
| 211 | |
| 212 DispatchEvent(contents->profile(), events::kOnTabCreated, json_args); | |
| 213 | 218 |
| 214 RegisterForTabNotifications(contents); | 219 RegisterForTabNotifications(contents); |
| 215 } | 220 } |
| 216 | 221 |
| 217 void ExtensionBrowserEventRouter::TabInsertedAt(TabContents* contents, | 222 void ExtensionBrowserEventRouter::TabInsertedAt(TabContents* contents, |
| 218 int index, | 223 int index, |
| 219 bool foreground) { | 224 bool foreground) { |
| 220 // If tab is new, send created event. | 225 // If tab is new, send created event. |
| 221 int tab_id = ExtensionTabUtil::GetTabId(contents); | 226 int tab_id = ExtensionTabUtil::GetTabId(contents); |
| 222 if (tab_entries_.find(tab_id) == tab_entries_.end()) { | 227 if (tab_entries_.find(tab_id) == tab_entries_.end()) { |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 } | 391 } |
| 387 | 392 |
| 388 void ExtensionBrowserEventRouter::TabChangedAt(TabContents* contents, | 393 void ExtensionBrowserEventRouter::TabChangedAt(TabContents* contents, |
| 389 int index, | 394 int index, |
| 390 TabChangeType change_type) { | 395 TabChangeType change_type) { |
| 391 TabUpdated(contents, false); | 396 TabUpdated(contents, false); |
| 392 } | 397 } |
| 393 | 398 |
| 394 void ExtensionBrowserEventRouter::TabStripEmpty() { } | 399 void ExtensionBrowserEventRouter::TabStripEmpty() { } |
| 395 | 400 |
| 396 void ExtensionBrowserEventRouter::PageActionExecuted( | 401 void ExtensionBrowserEventRouter::DispatchOldPageActionEvent( |
| 397 Profile* profile, | 402 Profile* profile, |
| 398 const std::string& extension_id, | 403 const std::string& extension_id, |
| 399 const std::string& page_action_id, | 404 const std::string& page_action_id, |
| 400 int tab_id, | 405 int tab_id, |
| 401 const std::string& url, | 406 const std::string& url, |
| 402 int button) { | 407 int button) { |
| 403 ListValue args; | 408 ListValue args; |
| 404 args.Append(Value::CreateStringValue(page_action_id)); | 409 args.Append(Value::CreateStringValue(page_action_id)); |
| 405 | 410 |
| 406 DictionaryValue* data = new DictionaryValue(); | 411 DictionaryValue* data = new DictionaryValue(); |
| 407 data->Set(tab_keys::kTabIdKey, Value::CreateIntegerValue(tab_id)); | 412 data->Set(tab_keys::kTabIdKey, Value::CreateIntegerValue(tab_id)); |
| 408 data->Set(tab_keys::kTabUrlKey, Value::CreateStringValue(url)); | 413 data->Set(tab_keys::kTabUrlKey, Value::CreateStringValue(url)); |
| 409 data->Set(page_action_keys::kButtonKey, Value::CreateIntegerValue(button)); | 414 data->Set(page_action_keys::kButtonKey, Value::CreateIntegerValue(button)); |
| 410 args.Append(data); | 415 args.Append(data); |
| 411 | 416 |
| 412 std::string json_args; | 417 std::string json_args; |
| 413 base::JSONWriter::Write(&args, false, &json_args); | 418 base::JSONWriter::Write(&args, false, &json_args); |
| 414 | 419 |
| 420 std::string event_name = std::string("pageActions/") + extension_id; |
| 421 DispatchEvent(profile, event_name.c_str(), json_args); |
| 422 } |
| 423 |
| 424 void ExtensionBrowserEventRouter::PageActionExecuted( |
| 425 Profile* profile, |
| 426 const std::string& extension_id, |
| 427 const std::string& page_action_id, |
| 428 int tab_id, |
| 429 const std::string& url, |
| 430 int button) { |
| 431 DispatchOldPageActionEvent(profile, extension_id, page_action_id, tab_id, url, |
| 432 button); |
| 433 TabContents* tab_contents = NULL; |
| 434 if (!ExtensionTabUtil::GetTabById(tab_id, profile, NULL, NULL, &tab_contents, |
| 435 NULL)) { |
| 436 return; |
| 437 } |
| 415 std::string event_name = std::string("pageAction/") + extension_id; | 438 std::string event_name = std::string("pageAction/") + extension_id; |
| 416 DispatchEvent(profile, event_name.c_str(), json_args); | 439 DispatchEventWithTab(profile, event_name.c_str(), tab_contents); |
| 417 } | 440 } |
| 418 | 441 |
| 419 void ExtensionBrowserEventRouter::BrowserActionExecuted( | 442 void ExtensionBrowserEventRouter::BrowserActionExecuted( |
| 420 Profile* profile, const std::string& extension_id, Browser* browser) { | 443 Profile* profile, const std::string& extension_id, Browser* browser) { |
| 421 TabContents* tab_contents = NULL; | 444 TabContents* tab_contents = NULL; |
| 422 int tab_id = 0; | 445 int tab_id = 0; |
| 423 if (!ExtensionTabUtil::GetDefaultTab(browser, &tab_contents, &tab_id)) | 446 if (!ExtensionTabUtil::GetDefaultTab(browser, &tab_contents, &tab_id)) |
| 424 return; | 447 return; |
| 425 | |
| 426 ListValue args; | |
| 427 args.Append(ExtensionTabUtil::CreateTabValue(tab_contents)); | |
| 428 std::string json_args; | |
| 429 base::JSONWriter::Write(&args, false, &json_args); | |
| 430 | |
| 431 std::string event_name = std::string("browserAction/") + extension_id; | 448 std::string event_name = std::string("browserAction/") + extension_id; |
| 432 DispatchEvent(profile, event_name.c_str(), json_args); | 449 DispatchEventWithTab(profile, event_name.c_str(), tab_contents); |
| 433 } | 450 } |
| OLD | NEW |