| 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: | 
|  |