summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/extensions/all_urls_apitest.cc8
-rw-r--r--chrome/browser/extensions/extension_browser_event_router.cc5
-rw-r--r--chrome/browser/extensions/extension_message_service.cc24
-rw-r--r--chrome/browser/extensions/extension_test_message_listener.cc5
4 files changed, 33 insertions, 9 deletions
diff --git a/chrome/browser/extensions/all_urls_apitest.cc b/chrome/browser/extensions/all_urls_apitest.cc
index 237f29c..9de10a2 100644
--- a/chrome/browser/extensions/all_urls_apitest.cc
+++ b/chrome/browser/extensions/all_urls_apitest.cc
@@ -15,8 +15,12 @@ const std::string kAllUrlsTarget =
typedef ExtensionApiTest AllUrlsApiTest;
-// Flaky. See http://crbug.com/57694.
-IN_PROC_BROWSER_TEST_F(AllUrlsApiTest, FLAKY_WhitelistedExtension) {
+
+// Note: This test is flaky, but is actively being worked on.
+// See http://crbug.com/57694. Finnur is adding traces to figure out where the
+// problem lies and needs to check in these traces because the problem doesn't
+// repro locally (nor on the try bots).
+IN_PROC_BROWSER_TEST_F(AllUrlsApiTest, WhitelistedExtension) {
Extension::emit_traces_for_whitelist_extension_test_ = true;
// First load the two extension.
diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc
index 80a6309..f94145a 100644
--- a/chrome/browser/extensions/extension_browser_event_router.cc
+++ b/chrome/browser/extensions/extension_browser_event_router.cc
@@ -70,6 +70,9 @@ static void DispatchEvent(Profile* profile,
if (profile->GetExtensionMessageService()) {
profile->GetExtensionMessageService()->DispatchEventToRenderers(
event_name, json_args, profile, GURL());
+ } else {
+ if (Extension::emit_traces_for_whitelist_extension_test_)
+ printf("***** ERROR: no profile->GetExtensionMessageService()\n");
}
}
@@ -390,7 +393,7 @@ void ExtensionBrowserEventRouter::TabUpdated(TabContents* contents,
// TODO(finnur): Remove once I have one failed run of this test.
if (Extension::emit_traces_for_whitelist_extension_test_)
- printf("***** not SENDING TabUpdated\n");
+ printf("***** Sending TabUpdated\n");
DispatchEvent(contents->profile(), events::kOnTabUpdated, json_args);
} else {
diff --git a/chrome/browser/extensions/extension_message_service.cc b/chrome/browser/extensions/extension_message_service.cc
index 6a615ff..db64037 100644
--- a/chrome/browser/extensions/extension_message_service.cc
+++ b/chrome/browser/extensions/extension_message_service.cc
@@ -393,26 +393,42 @@ void ExtensionMessageService::PostMessageFromRenderer(
void ExtensionMessageService::DispatchEventToRenderers(
const std::string& event_name, const std::string& event_args,
Profile* restrict_to_profile, const GURL& event_url) {
- if (!profile_)
+ if (Extension::emit_traces_for_whitelist_extension_test_) {
+ printf("***** DispatchEventToRenderers: %s(%s) for url '%s'\n",
+ event_name.c_str(), event_args.c_str(), event_url.spec().c_str());
+ }
+
+ if (!profile_) {
+ if (Extension::emit_traces_for_whitelist_extension_test_)
+ printf("***** ERROR: No profile, aborting\n");
return;
+ }
// We don't expect to get events from a completely different profile.
DCHECK(!restrict_to_profile || profile_->IsSameProfile(restrict_to_profile));
ListenerMap::iterator it = listeners_.find(event_name);
- if (it == listeners_.end())
+ if (it == listeners_.end()) {
+ if (Extension::emit_traces_for_whitelist_extension_test_)
+ printf("***** WARNING: no listeners, aborting\n");
return;
+ }
std::set<int>& pids = it->second;
// Send the event only to renderers that are listening for it.
for (std::set<int>::iterator pid = pids.begin(); pid != pids.end(); ++pid) {
RenderProcessHost* renderer = RenderProcessHost::FromID(*pid);
- if (!renderer)
+ if (!renderer) {
+ if (Extension::emit_traces_for_whitelist_extension_test_)
+ printf("***** ERROR: !renderer, trying next one\n");
continue;
+ }
if (!ChildProcessSecurityPolicy::GetInstance()->
HasExtensionBindings(*pid)) {
// Don't send browser-level events to unprivileged processes.
+ if (Extension::emit_traces_for_whitelist_extension_test_)
+ printf("***** ERROR: unprivileged pid, try next\n");
continue;
}
@@ -420,6 +436,8 @@ void ExtensionMessageService::DispatchEventToRenderers(
// incognito tab event sent to a normal process, or vice versa).
bool cross_incognito =
restrict_to_profile && renderer->profile() != restrict_to_profile;
+ if (Extension::emit_traces_for_whitelist_extension_test_)
+ printf("***** --- Dispatching event! ---\n");
DispatchEvent(renderer, event_name, event_args, cross_incognito, event_url);
}
}
diff --git a/chrome/browser/extensions/extension_test_message_listener.cc b/chrome/browser/extensions/extension_test_message_listener.cc
index 5827b51..be23a4a 100644
--- a/chrome/browser/extensions/extension_test_message_listener.cc
+++ b/chrome/browser/extensions/extension_test_message_listener.cc
@@ -10,7 +10,6 @@
#include "chrome/test/ui_test_utils.h"
// TODO(finnur): Remove after capturing debug info.
-#include <iostream>
#include "chrome/common/extensions/extension.h"
ExtensionTestMessageListener::ExtensionTestMessageListener(
@@ -50,8 +49,8 @@ void ExtensionTestMessageListener::Observe(
function_ = Source<ExtensionTestSendMessageFunction>(source).ptr();
// TODO(finnur): Remove after capturing debug info.
if (Extension::emit_traces_for_whitelist_extension_test_) {
- std::cout << "-*-*- Got : " << content.c_str() << "\n" << std::flush;
- std::cout << "-*-*- Expected: " << expected_message_.c_str() << "\n" << std::flush;
+ printf("-*-*- Got : %s\n", content.c_str());
+ printf("-*-*- Expected: %s\n", expected_message_.c_str());
}
if (!satisfied_ && content == expected_message_) {