| Index: chrome/browser/external_protocol/external_protocol_handler.h
 | 
| diff --git a/chrome/browser/external_protocol/external_protocol_handler.h b/chrome/browser/external_protocol/external_protocol_handler.h
 | 
| index 7c934c5f7c6db51fe133bc4f5e2ad581836dd512..d7c7891a75b245fc4dd4cafaefc710f7ce81bd83 100644
 | 
| --- a/chrome/browser/external_protocol/external_protocol_handler.h
 | 
| +++ b/chrome/browser/external_protocol/external_protocol_handler.h
 | 
| @@ -30,7 +30,8 @@ class ExternalProtocolHandler {
 | 
|      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 user_gesture) = 0;
 | 
|      virtual void BlockRequest() = 0;
 | 
|      virtual void RunExternalProtocolDialog(const GURL& url,
 | 
|                                             int render_process_host_id,
 | 
| @@ -41,7 +42,7 @@ class ExternalProtocolHandler {
 | 
|    };
 | 
|  
 | 
|    // Returns whether we should block a given scheme.
 | 
| -  static BlockState GetBlockState(const std::string& scheme);
 | 
| +  static BlockState GetBlockState(const std::string& scheme, bool user_gesture);
 | 
|  
 | 
|    // Sets whether we should block a given scheme.
 | 
|    static void SetBlockState(const std::string& scheme, BlockState state);
 | 
| @@ -54,14 +55,16 @@ class ExternalProtocolHandler {
 | 
|    // 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);
 | 
| +                        int tab_contents_id, bool user_gesture) {
 | 
| +      LaunchUrlWithDelegate(
 | 
| +          url, render_process_host_id, tab_contents_id, NULL, user_gesture);
 | 
|    }
 | 
|  
 | 
|    // 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 user_gesture);
 | 
|  
 | 
|    // Creates and runs a External Protocol dialog box.
 | 
|    // |url| - The url of the request.
 | 
| @@ -95,12 +98,6 @@ class ExternalProtocolHandler {
 | 
|    // Prepopulates the dictionary with known protocols to deny or allow, if
 | 
|    // 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();
 | 
|  };
 | 
|  
 | 
|  #endif  // CHROME_BROWSER_EXTERNAL_PROTOCOL_EXTERNAL_PROTOCOL_HANDLER_H_
 | 
| 
 |