Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3132)

Unified Diff: chrome/browser/permissions/permission_request_manager.cc

Issue 2770423002: Do not show permission bubble when browser is not active (Closed)
Patch Set: BrowserListObserver Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/permissions/permission_request_manager.cc
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc
index 1ed90638f96563b93e44daf7524b4e9583c078b0..4750fc2a9fd08d1c25236c25d4ec81540761d015 100644
--- a/chrome/browser/permissions/permission_request_manager.cc
+++ b/chrome/browser/permissions/permission_request_manager.cc
@@ -12,6 +12,8 @@
#include "build/build_config.h"
#include "chrome/browser/permissions/permission_request.h"
#include "chrome/browser/permissions/permission_uma_util.h"
+#include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/permission_bubble/permission_prompt.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/chrome_switches.h"
@@ -79,12 +81,16 @@ PermissionRequestManager::PermissionRequestManager(
: content::WebContentsObserver(web_contents),
view_factory_(base::Bind(&PermissionPrompt::Create)),
view_(nullptr),
+ browser_active_(false),
sky 2017/03/27 22:43:45 Why do you need to cache browser_active_ ? Can't T
Qiang(Joe) Xu 2017/04/06 22:22:51 Yes, we can eliminate the usage of browser_active_
main_frame_has_fully_loaded_(false),
persist_(true),
auto_response_for_test_(NONE),
- weak_factory_(this) {}
+ weak_factory_(this) {
+ BrowserList::AddObserver(this);
+}
PermissionRequestManager::~PermissionRequestManager() {
+ BrowserList::RemoveObserver(this);
if (view_ != NULL)
view_->SetDelegate(NULL);
@@ -356,6 +362,23 @@ void PermissionRequestManager::Closing() {
FinalizeBubble();
}
+void PermissionRequestManager::OnBrowserSetLastActive(Browser* browser) {
+ Browser* found = chrome::FindBrowserWithWebContents(web_contents());
+ if (found != browser)
+ return;
+
+ browser_active_ = true;
+ ScheduleShowBubble();
+}
+
+void PermissionRequestManager::OnBrowserNoLongerActive(Browser* browser) {
+ Browser* found = chrome::FindBrowserWithWebContents(web_contents());
+ if (found != browser)
+ return;
+
+ browser_active_ = false;
+}
+
void PermissionRequestManager::ScheduleShowBubble() {
// ::ScheduleShowBubble() will be called again when the main frame will be
// loaded.
@@ -372,6 +395,8 @@ void PermissionRequestManager::ScheduleShowBubble() {
void PermissionRequestManager::TriggerShowBubble() {
if (!view_)
return;
+ if (!browser_active_)
+ return;
if (IsBubbleVisible())
return;
if (!main_frame_has_fully_loaded_)

Powered by Google App Engine
This is Rietveld 408576698