diff options
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_) { |