Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Unified Diff: chrome/browser/external_protocol/external_protocol_handler.cc

Issue 1091253008: Fix an issue that external protocol in subframes are not handled on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and fix test Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/external_protocol/external_protocol_handler.cc
diff --git a/chrome/browser/external_protocol/external_protocol_handler.cc b/chrome/browser/external_protocol/external_protocol_handler.cc
index 552ca599d5ee86c3543d06ba1ee59469bfb0283a..cf8c99c209482ab7bb07fb08d6323b92b9cb2316 100644
--- a/chrome/browser/external_protocol/external_protocol_handler.cc
+++ b/chrome/browser/external_protocol/external_protocol_handler.cc
@@ -60,14 +60,17 @@ void RunExternalProtocolDialogWithDelegate(
const GURL& url,
int render_process_host_id,
int routing_id,
+ ui::PageTransition page_transition,
+ bool has_user_gesture,
ExternalProtocolHandler::Delegate* delegate) {
if (!delegate) {
- ExternalProtocolHandler::RunExternalProtocolDialog(url,
- render_process_host_id,
- routing_id);
+ ExternalProtocolHandler::RunExternalProtocolDialog(
+ url, render_process_host_id, routing_id, page_transition,
+ has_user_gesture);
} else {
- delegate->RunExternalProtocolDialog(url, render_process_host_id,
- routing_id);
+ delegate->RunExternalProtocolDialog(
+ url, render_process_host_id, routing_id, page_transition,
+ has_user_gesture);
}
}
@@ -94,12 +97,16 @@ class ExternalDefaultProtocolObserver
int render_process_host_id,
int tab_contents_id,
bool prompt_user,
+ ui::PageTransition page_transition,
+ bool has_user_gesture,
ExternalProtocolHandler::Delegate* delegate)
: delegate_(delegate),
escaped_url_(escaped_url),
render_process_host_id_(render_process_host_id),
tab_contents_id_(tab_contents_id),
- prompt_user_(prompt_user) {}
+ prompt_user_(prompt_user),
+ page_transition_(page_transition),
+ has_user_gesture_(has_user_gesture) {}
void SetDefaultWebClientUIState(
ShellIntegration::DefaultWebClientUIState state) override {
@@ -126,8 +133,9 @@ class ExternalDefaultProtocolObserver
// Ask the user if they want to allow the protocol. This will call
// LaunchUrlWithoutSecurityCheck if the user decides to accept the
// protocol.
- RunExternalProtocolDialogWithDelegate(escaped_url_,
- render_process_host_id_, tab_contents_id_, delegate_);
+ RunExternalProtocolDialogWithDelegate(
+ escaped_url_, render_process_host_id_, tab_contents_id_,
+ page_transition_, has_user_gesture_, delegate_);
return;
}
@@ -139,10 +147,12 @@ class ExternalDefaultProtocolObserver
private:
ExternalProtocolHandler::Delegate* delegate_;
- GURL escaped_url_;
- int render_process_host_id_;
- int tab_contents_id_;
- bool prompt_user_;
+ const GURL escaped_url_;
+ const int render_process_host_id_;
+ const int tab_contents_id_;
+ const bool prompt_user_;
+ const ui::PageTransition page_transition_;
+ const bool has_user_gesture_;
};
} // namespace
@@ -252,10 +262,13 @@ void ExternalProtocolHandler::SetBlockState(const std::string& scheme,
}
// static
-void ExternalProtocolHandler::LaunchUrlWithDelegate(const GURL& url,
- int render_process_host_id,
- int tab_contents_id,
- Delegate* delegate) {
+void ExternalProtocolHandler::LaunchUrlWithDelegate(
+ const GURL& url,
+ int render_process_host_id,
+ int tab_contents_id,
+ ui::PageTransition page_transition,
+ bool has_user_gesture,
+ Delegate* delegate) {
DCHECK(base::MessageLoopForUI::IsCurrent());
// Escape the input scheme to be sure that the command does not
@@ -280,6 +293,8 @@ void ExternalProtocolHandler::LaunchUrlWithDelegate(const GURL& url,
render_process_host_id,
tab_contents_id,
block_state == UNKNOWN,
+ page_transition,
+ has_user_gesture,
delegate);
scoped_refptr<ShellIntegration::DefaultProtocolClientWorker> worker =
CreateShellWorker(observer, escaped_url.scheme(), delegate);

Powered by Google App Engine
This is Rietveld 408576698