summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/intents/web_intent_picker_controller.cc4
-rw-r--r--content/browser/intents/intent_injector.cc13
-rw-r--r--content/renderer/intents_dispatcher.cc1
-rw-r--r--webkit/glue/web_intent_reply_data.h6
4 files changed, 20 insertions, 4 deletions
diff --git a/chrome/browser/ui/intents/web_intent_picker_controller.cc b/chrome/browser/ui/intents/web_intent_picker_controller.cc
index bc55a0a..6e7a28c 100644
--- a/chrome/browser/ui/intents/web_intent_picker_controller.cc
+++ b/chrome/browser/ui/intents/web_intent_picker_controller.cc
@@ -205,7 +205,9 @@ void WebIntentPickerController::OnServiceChosen(size_t index) {
}
void WebIntentPickerController::OnCancelled() {
- // TODO(binji) Tell the renderer that the intent was cancelled.
+ InvokingTabReplyForwarder forwarder(wrapper_, routing_id_);
+ forwarder.Send(new IntentsMsg_WebIntentReply(
+ 0, webkit_glue::WEB_INTENT_PICKER_CANCELLED, string16(), intent_id_));
ClosePicker();
}
diff --git a/content/browser/intents/intent_injector.cc b/content/browser/intents/intent_injector.cc
index 2295194..a8d74f8 100644
--- a/content/browser/intents/intent_injector.cc
+++ b/content/browser/intents/intent_injector.cc
@@ -24,6 +24,12 @@ IntentInjector::~IntentInjector() {
}
void IntentInjector::TabContentsDestroyed(TabContents* tab) {
+ if (source_tab_.get()) {
+ source_tab_->Send(new IntentsMsg_WebIntentReply(
+ 0, webkit_glue::WEB_INTENT_SERVICE_TAB_CLOSED, string16(), intent_id_));
+ source_tab_.reset(NULL);
+ }
+
delete this;
}
@@ -87,6 +93,9 @@ void IntentInjector::OnReply(const IPC::Message& message,
// TODO(gbillock): We need to observe source_tab_ and make
// sure it hasn't been closed or something...
- source_tab_->Send(new IntentsMsg_WebIntentReply(
- 0, reply_type, data, intent_id));
+ if (source_tab_.get()) {
+ source_tab_->Send(new IntentsMsg_WebIntentReply(
+ 0, reply_type, data, intent_id));
+ source_tab_.reset(NULL);
+ }
}
diff --git a/content/renderer/intents_dispatcher.cc b/content/renderer/intents_dispatcher.cc
index a2f56d90..1c8abaf 100644
--- a/content/renderer/intents_dispatcher.cc
+++ b/content/renderer/intents_dispatcher.cc
@@ -149,7 +149,6 @@ void IntentsDispatcher::OnWebIntentReply(
LOG(INFO) << "RenderView got reply to intent type " << reply_type;
}
-
void IntentsDispatcher::OnResult(const WebKit::WebString& data) {
Send(new IntentsMsg_WebIntentReply(
routing_id(),
diff --git a/webkit/glue/web_intent_reply_data.h b/webkit/glue/web_intent_reply_data.h
index 287dbe9..70a65ff 100644
--- a/webkit/glue/web_intent_reply_data.h
+++ b/webkit/glue/web_intent_reply_data.h
@@ -17,6 +17,12 @@ enum WebIntentReplyType {
// Sent for a failure message.
WEB_INTENT_REPLY_FAILURE,
+
+ // Sent if the picker is cancelled without a selection being made.
+ WEB_INTENT_PICKER_CANCELLED,
+
+ // Sent if the service tab is closed without any response being sent.
+ WEB_INTENT_SERVICE_TAB_CLOSED,
};
} // namespace webkit_glue