| Index: chrome/browser/content_settings/permission_context_base.cc
 | 
| diff --git a/chrome/browser/content_settings/permission_context_base.cc b/chrome/browser/content_settings/permission_context_base.cc
 | 
| index 585d802a41a0ce2bfb091bb49570df9ece089737..e82419df72ffd51cc2978ed1b961365f00de9f4d 100644
 | 
| --- a/chrome/browser/content_settings/permission_context_base.cc
 | 
| +++ b/chrome/browser/content_settings/permission_context_base.cc
 | 
| @@ -29,7 +29,7 @@ PermissionContextBase::PermissionContextBase(
 | 
|  }
 | 
|  
 | 
|  PermissionContextBase::~PermissionContextBase() {
 | 
| -  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
 | 
| +  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 | 
|  }
 | 
|  
 | 
|  void PermissionContextBase::RequestPermission(
 | 
| @@ -38,7 +38,7 @@ void PermissionContextBase::RequestPermission(
 | 
|      const GURL& requesting_frame,
 | 
|      bool user_gesture,
 | 
|      const BrowserPermissionCallback& callback) {
 | 
| -  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
 | 
| +  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 | 
|  
 | 
|    DecidePermission(web_contents,
 | 
|                     id,
 | 
| @@ -48,6 +48,25 @@ void PermissionContextBase::RequestPermission(
 | 
|                     callback);
 | 
|  }
 | 
|  
 | 
| +void PermissionContextBase::CancelPermissionRequest(
 | 
| +    content::WebContents* web_contents,
 | 
| +    const PermissionRequestID& id) {
 | 
| +  DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
 | 
| +
 | 
| +  if (PermissionBubbleManager::Enabled()) {
 | 
| +    PermissionBubbleRequest* cancelling =
 | 
| +        pending_bubbles_.get(id.ToString());
 | 
| +    if (cancelling != NULL && web_contents != NULL &&
 | 
| +        PermissionBubbleManager::FromWebContents(web_contents) != NULL) {
 | 
| +      PermissionBubbleManager::FromWebContents(web_contents)->
 | 
| +          CancelRequest(cancelling);
 | 
| +    }
 | 
| +    return;
 | 
| +  }
 | 
| +
 | 
| +  GetQueueController()->CancelInfoBarRequest(id);
 | 
| +}
 | 
| +
 | 
|  void PermissionContextBase::DecidePermission(
 | 
|      content::WebContents* web_contents,
 | 
|      const PermissionRequestID& id,
 | 
| @@ -58,7 +77,8 @@ void PermissionContextBase::DecidePermission(
 | 
|    DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
 | 
|  
 | 
|    ContentSetting content_setting =
 | 
| -      profile_->GetHostContentSettingsMap()->GetContentSetting(
 | 
| +      profile_->GetHostContentSettingsMap()
 | 
| +      ->GetContentSettingAndMaybeUpdateLastUsage(
 | 
|            requesting_origin, embedder_origin, permission_type_, std::string());
 | 
|    switch (content_setting) {
 | 
|      case CONTENT_SETTING_BLOCK:
 | 
| 
 |