| Index: chrome/browser/permissions/permission_blacklist_client.cc
|
| diff --git a/chrome/browser/permissions/permission_blacklist_client.cc b/chrome/browser/permissions/permission_blacklist_client.cc
|
| index ef0be9b38574c4b4515a9923c5d5666b2d5ff6c4..de84c92ae287a9185f3c76d6d5516a7c277122e4 100644
|
| --- a/chrome/browser/permissions/permission_blacklist_client.cc
|
| +++ b/chrome/browser/permissions/permission_blacklist_client.cc
|
| @@ -9,7 +9,9 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/timer/elapsed_timer.h"
|
| #include "base/timer/timer.h"
|
| +#include "chrome/browser/permissions/permission_util.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "url/gurl.h"
|
| @@ -57,6 +59,7 @@ void PermissionBlacklistClient::StartCheck(const GURL& request_origin) {
|
| // empty response if Safe Browsing times out.
|
| safe_browsing::ThreatMetadata empty_metadata;
|
| timer_ = base::MakeUnique<base::OneShotTimer>();
|
| + elapsed_timer_.reset(new base::ElapsedTimer());
|
| timer_->Start(
|
| FROM_HERE, base::TimeDelta::FromMilliseconds(timeout_),
|
| base::Bind(&PermissionBlacklistClient::OnCheckApiBlacklistUrlResult, this,
|
| @@ -69,17 +72,25 @@ void PermissionBlacklistClient::OnCheckApiBlacklistUrlResult(
|
| const safe_browsing::ThreatMetadata& metadata) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
|
|
| - if (timer_->IsRunning())
|
| + base::TimeDelta response_time = elapsed_timer_->Elapsed();
|
| + SafeBrowsingResponse response = SafeBrowsingResponse::NOT_BLACKLISTED;
|
| +
|
| + if (timer_->IsRunning()) {
|
| timer_->Stop();
|
| - else
|
| + } else {
|
| db_manager_->CancelApiCheck(this);
|
| - timer_.reset(nullptr);
|
| + response = SafeBrowsingResponse::TIMEOUT;
|
| + }
|
|
|
| + timer_.reset(nullptr);
|
| bool permission_blocked =
|
| metadata.api_permissions.find(
|
| PermissionUtil::ConvertPermissionTypeToSafeBrowsingName(
|
| permission_type_)) != metadata.api_permissions.end();
|
| + if (permission_blocked)
|
| + response = SafeBrowsingResponse::BLACKLISTED;
|
|
|
| + PermissionUmaUtil::RecordSafeBrowsingResponse(response_time, response);
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::UI, FROM_HERE,
|
| base::Bind(&PermissionBlacklistClient::EvaluateBlacklistResultOnUiThread,
|
| @@ -87,11 +98,11 @@ void PermissionBlacklistClient::OnCheckApiBlacklistUrlResult(
|
| }
|
|
|
| void PermissionBlacklistClient::EvaluateBlacklistResultOnUiThread(
|
| - bool permission_blocked) {
|
| + bool response) {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
|
| if (is_active_)
|
| - callback_.Run(permission_blocked);
|
| + callback_.Run(response);
|
| Release();
|
| }
|
|
|
|
|