virtual ShellIntegration::DefaultProtocolClientWorker* CreateShellWorker(
ShellIntegration::DefaultWebClientObserver* observer,
const std::string& protocol) = 0;
- virtual BlockState GetBlockState(const std::string& scheme) = 0;
+ virtual BlockState GetBlockState(const std::string& scheme,
+ bool initiated_by_user_gesture) = 0;
virtual void BlockRequest() = 0;
virtual void RunExternalProtocolDialog(const GURL& url,
int render_process_host_id,
};
// Returns whether we should block a given scheme.
- static BlockState GetBlockState(const std::string& scheme);
+ static BlockState GetBlockState(const std::string& scheme,
+ bool initiated_by_user_gesture);
// Sets whether we should block a given scheme.
static void SetBlockState(const std::string& scheme, BlockState state);
- // Checks to see if the protocol is allowed, if it is whitelisted,
- // the application associated with the protocol is launched on the io thread,
- // if it is blacklisted, returns silently. Otherwise, an
- // ExternalProtocolDialog is created asking the user. If the user accepts,
- // LaunchUrlWithoutSecurityCheck is called on the io thread and the
- // application is launched.
- // Must run on the UI thread.
- static void LaunchUrl(const GURL& url, int render_process_host_id,
- int tab_contents_id) {
- LaunchUrlWithDelegate(url, render_process_host_id, tab_contents_id, NULL);
- }
-
// Version of LaunchUrl allowing use of a delegate to facilitate unit
// testing.
static void LaunchUrlWithDelegate(const GURL& url, int render_process_host_id,
- int tab_contents_id, Delegate* delegate);
+ int tab_contents_id, Delegate* delegate,
+ bool initiated_by_user_gesture);
// Creates and runs a External Protocol dialog box.
// |url| - The url of the request.
// preferences for them do not already exist.
static void PrepopulateDictionary(base::DictionaryValue* win_pref);
- // Allows LaunchUrl to proceed with launching an external protocol handler.
- // This is typically triggered by a user gesture, but is also called for
- // each extension API function. Note that each call to LaunchUrl resets
- // the state to false (not allowed).
- static void PermitLaunchUrl();
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ExternalProtocolHandler);
};
#endif // CHROME_BROWSER_EXTERNAL_PROTOCOL_EXTERNAL_PROTOCOL_HANDLER_H_