Index: chrome/browser/intents/register_intent_handler_infobar_delegate.cc |
diff --git a/chrome/browser/intents/register_intent_handler_infobar_delegate.cc b/chrome/browser/intents/register_intent_handler_infobar_delegate.cc |
index c0914323c1c1e8b9caedce3669f0a6d7c4a44ec9..ad3fada7f4827a25dce0b0dc063a41fda51df7ba 100644 |
--- a/chrome/browser/intents/register_intent_handler_infobar_delegate.cc |
+++ b/chrome/browser/intents/register_intent_handler_infobar_delegate.cc |
@@ -4,8 +4,11 @@ |
#include "chrome/browser/intents/register_intent_handler_infobar_delegate.h" |
+#include "base/bind.h" |
+#include "base/bind_helpers.h" |
#include "base/logging.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/infobars/infobar_tab_helper.h" |
#include "chrome/browser/intents/web_intents_registry.h" |
#include "chrome/browser/intents/web_intents_registry_factory.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -60,3 +63,32 @@ bool RegisterIntentHandlerInfoBarDelegate::LinkClicked( |
// TODO(jhawkins): Add associated bug for the article here. |
return false; |
} |
+ |
+namespace { |
+ |
+// Helper continuation for MaybeShowIntentInfoBar. |
+void CheckProvider(InfoBarTabHelper* infobar_helper, |
+ WebIntentsRegistry* registry, |
+ const webkit_glue::WebIntentServiceData& service, |
+ bool provider_exists) { |
+ if (!provider_exists) { |
+ infobar_helper->AddInfoBar(new RegisterIntentHandlerInfoBarDelegate( |
+ infobar_helper, registry, service)); |
+ } |
+} |
+ |
+} // namespace |
+ |
+// static |
+void RegisterIntentHandlerInfoBarDelegate::MaybeShowIntentInfoBar( |
+ InfoBarTabHelper* infobar_helper, |
+ WebIntentsRegistry* registry, |
+ const webkit_glue::WebIntentServiceData& service) { |
+ DCHECK(infobar_helper); |
+ DCHECK(registry); |
+ registry->IntentProviderExists(service, |
+ base::Bind(&CheckProvider, |
+ base::Unretained(infobar_helper), |
+ base::Unretained(registry), |
James Hawkins
2011/11/09 17:32:42
Remove base::Unretained() from |registry|. Only t
Greg Billock
2011/11/10 00:21:31
Done.
|
+ service)); |
+} |