Commit f57c6195 authored by felt's avatar felt Committed by Commit bot

Update geolocation permission tests for the permission bubble

This makes the geolocation permission tests run for both infobars and
permission bubbles. The tests now run as parameterized tests.

Supercedes parts of:
https://codereview.chromium.org/411503005/
https://codereview.chromium.org/341833004/

BUG=438758

Review URL: https://codereview.chromium.org/787033004

Cr-Commit-Position: refs/heads/master@{#314541}
parent 835a430d
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/website_settings/mock_permission_bubble_view.h"
#include "base/run_loop.h"
MockPermissionBubbleView::MockPermissionBubbleView()
: visible_(false),
can_accept_updates_(true),
delegate_(nullptr),
browser_test_(false) {}
MockPermissionBubbleView::~MockPermissionBubbleView() {}
void MockPermissionBubbleView::SetDelegate(Delegate* delegate) {
delegate_ = delegate;
}
void MockPermissionBubbleView::Show(
const std::vector<PermissionBubbleRequest*>& requests,
const std::vector<bool>& accept_state,
bool customization_state_) {
visible_ = true;
permission_requests_ = requests;
permission_states_ = accept_state;
if (browser_test_)
base::MessageLoopForUI::current()->Quit();
}
void MockPermissionBubbleView::Hide() {
visible_ = false;
}
bool MockPermissionBubbleView::IsVisible() {
return visible_;
}
bool MockPermissionBubbleView::CanAcceptRequestUpdate() {
return can_accept_updates_;
}
void MockPermissionBubbleView::Accept() {
delegate_->Accept();
}
void MockPermissionBubbleView::Deny() {
delegate_->Deny();
}
void MockPermissionBubbleView::Close() {
delegate_->Closing();
}
void MockPermissionBubbleView::Clear() {
visible_ = false;
can_accept_updates_ = true;
delegate_ = nullptr;
permission_requests_.clear();
permission_states_.clear();
}
void MockPermissionBubbleView::SetBrowserTest(bool browser_test) {
browser_test_ = browser_test;
}
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_WEBSITE_SETTINGS_MOCK_PERMISSION_BUBBLE_VIEW_H_
#define CHROME_BROWSER_UI_WEBSITE_SETTINGS_MOCK_PERMISSION_BUBBLE_VIEW_H_
#include "chrome/browser/ui/website_settings/permission_bubble_request.h"
#include "chrome/browser/ui/website_settings/permission_bubble_view.h"
// Provides a skeleton class for unit testing, when trying to test the bubble
// manager logic. Should not be used for anything that requires actual UI.
// See example usage in
// chrome/browser/geolocation/geolocation_permission_context_unittest.cc.
class MockPermissionBubbleView : public PermissionBubbleView {
public:
MockPermissionBubbleView();
~MockPermissionBubbleView() override;
// PermissionBubbleView:
void SetDelegate(Delegate* delegate) override;
void Show(const std::vector<PermissionBubbleRequest*>& requests,
const std::vector<bool>& accept_state,
bool customization_state_) override;
bool CanAcceptRequestUpdate() override;
void Hide() override;
bool IsVisible() override;
// Wrappers that update the state of the bubble.
void Accept();
void Deny();
void Close();
void Clear();
// If we're in a browser test, we need to interact with the message loop.
// But that shouldn't be done in unit tests.
void SetBrowserTest(bool browser_test);
private:
bool visible_;
bool can_accept_updates_;
Delegate* delegate_;
bool browser_test_;
std::vector<PermissionBubbleRequest*> permission_requests_;
std::vector<bool> permission_states_;
};
#endif // CHROME_BROWSER_UI_WEBSITE_SETTINGS_MOCK_PERMISSION_BUBBLE_VIEW_H_
......@@ -66,6 +66,9 @@ class PermissionBubbleManager
private:
friend class DownloadRequestLimiterTest;
friend class GeolocationBrowserTest;
friend class GeolocationPermissionContextTests;
friend class GeolocationPermissionContextParamTests;
friend class PermissionBubbleManagerTest;
friend class PermissionContextBaseTests;
friend class content::WebContentsUserData<PermissionBubbleManager>;
......
......@@ -494,6 +494,8 @@
'browser/ui/toolbar/component_toolbar_actions_browsertest.cc',
'browser/ui/toolbar/test_toolbar_model.cc',
'browser/ui/toolbar/test_toolbar_model.h',
'browser/ui/website_settings/mock_permission_bubble_view.cc',
'browser/ui/website_settings/mock_permission_bubble_view.h',
'browser/ui/webui/bidi_checker_web_ui_test.cc',
'browser/ui/webui/bidi_checker_web_ui_test.h',
'browser/ui/webui/bookmarks_ui_browsertest.cc',
......
......@@ -522,6 +522,8 @@
'browser/ui/sync/sync_promo_ui_unittest.cc',
'browser/ui/tests/ui_gfx_image_unittest.cc',
'browser/ui/tests/ui_gfx_image_unittest.mm',
'browser/ui/website_settings/mock_permission_bubble_view.cc',
'browser/ui/website_settings/mock_permission_bubble_view.h',
'browser/ui/website_settings/permission_bubble_manager_unittest.cc',
'browser/ui/website_settings/website_settings_unittest.cc',
'browser/ui/webui/fileicon_source_unittest.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment