Commit 54e1801b authored by Bret Sepulveda's avatar Bret Sepulveda Committed by Commit Bot

Delete GetNativeWindow from PermissionPrompt.

GetNativeWindow is only used by tests, and so the method is deleted
from non-test code. Instead, PermissionRequestManagerTestApi downcasts
PermissionPrompt to PermissionPromptImpl in order to get at the prompt
bubble's NativeWindow. Because this requires a dependency on views,
which is not allowed from c/b/permissions,
permission_request_manager_test_api.h/cc is moved to the new
directory chrome/test/permissions.

Bug: 1019129
Change-Id: I5d5e47743abd7c1702de97f78c7acb0898ec1ee6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1893287
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarVasilii Sukhanov <vasilii@chromium.org>
Reviewed-by: default avatarEmily Stark <estark@chromium.org>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#722458}
parent 958cb242
......@@ -59,11 +59,6 @@ void PermissionPromptAndroid::UpdateAnchorPosition() {
NOTREACHED() << "UpdateAnchorPosition is not implemented";
}
gfx::NativeWindow PermissionPromptAndroid::GetNativeWindow() {
NOTREACHED() << "GetNativeWindow is not implemented";
return nullptr;
}
PermissionPrompt::TabSwitchingBehavior
PermissionPromptAndroid::GetTabSwitchingBehavior() {
if (permission_request_notification_)
......
......@@ -32,7 +32,6 @@ class PermissionPromptAndroid : public PermissionPrompt,
// PermissionPrompt:
void UpdateAnchorPosition() override;
gfx::NativeWindow GetNativeWindow() override;
TabSwitchingBehavior GetTabSwitchingBehavior() override;
void Closing();
......
......@@ -158,12 +158,6 @@ void PermissionRequestManager::UpdateAnchorPosition() {
view_->UpdateAnchorPosition();
}
gfx::NativeWindow PermissionRequestManager::GetBubbleWindow() {
if (view_)
return view_->GetNativeWindow();
return nullptr;
}
void PermissionRequestManager::DidStartNavigation(
content::NavigationHandle* navigation_handle) {
if (!navigation_handle->IsInMainFrame() ||
......
......@@ -74,10 +74,6 @@ class PermissionRequestManager
// Will reposition the bubble (may change parent if necessary).
void UpdateAnchorPosition();
// Get the native window of the bubble.
// TODO(hcarmona): Remove this as part of the bubble API work.
gfx::NativeWindow GetBubbleWindow();
// For observing the status of the permission bubble manager.
void AddObserver(Observer* observer);
void RemoveObserver(Observer* observer);
......
......@@ -19,7 +19,6 @@
#include "chrome/browser/permissions/mock_permission_request.h"
#include "chrome/browser/permissions/permission_context_base.h"
#include "chrome/browser/permissions/permission_request_impl.h"
#include "chrome/browser/permissions/permission_request_manager_test_api.h"
#include "chrome/browser/permissions/permission_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
......@@ -30,6 +29,7 @@
#include "chrome/common/chrome_features.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/variations/variations_associated_data.h"
#include "content/public/browser/render_frame_host.h"
......
......@@ -11,7 +11,6 @@
#include "base/run_loop.h"
#include "base/test/scoped_feature_list.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/permissions/permission_request_manager_test_api.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_window.h"
......@@ -19,6 +18,7 @@
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/interactive_test_utils.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include "ui/base/test/ui_controls.h"
#import "ui/base/test/windowed_nsnotification_observer.h"
#include "ui/base/ui_base_features.h"
......
......@@ -4,7 +4,6 @@
#include <memory>
#include "chrome/browser/permissions/permission_request_manager_test_api.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands_mac.h"
#include "chrome/browser/ui/browser_finder.h"
......@@ -15,6 +14,7 @@
#include "chrome/browser/ui/permission_bubble/permission_bubble_browser_test_util.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#import "testing/gtest_mac.h"
#include "ui/base/test/scoped_fake_nswindow_fullscreen.h"
......
......@@ -21,12 +21,6 @@ MockPermissionPrompt::~MockPermissionPrompt() {
void MockPermissionPrompt::UpdateAnchorPosition() {}
gfx::NativeWindow MockPermissionPrompt::GetNativeWindow() {
// This class should only be used when the UI is not necessary.
NOTREACHED();
return nullptr;
}
PermissionPrompt::TabSwitchingBehavior
MockPermissionPrompt::GetTabSwitchingBehavior() {
#if defined(OS_ANDROID)
......
......@@ -19,7 +19,6 @@ class MockPermissionPrompt : public PermissionPrompt {
// PermissionPrompt:
void UpdateAnchorPosition() override;
gfx::NativeWindow GetNativeWindow() override;
TabSwitchingBehavior GetTabSwitchingBehavior() override;
bool IsVisible();
......
......@@ -10,7 +10,6 @@
#include "base/callback.h"
#include "base/strings/string16.h"
#include "ui/gfx/native_widget_types.h"
class PermissionRequest;
......@@ -77,10 +76,6 @@ class PermissionPrompt {
// Updates where the prompt should be anchored. ex: fullscreen toggle.
virtual void UpdateAnchorPosition() = 0;
// Returns a reference to this prompt's native window.
// TODO(hcarmona): Remove this as part of the bubble API work.
virtual gfx::NativeWindow GetNativeWindow() = 0;
// Get the behavior of this prompt when the user switches away from the
// associated tab.
virtual TabSwitchingBehavior GetTabSwitchingBehavior() = 0;
......
......@@ -6,7 +6,7 @@
#include "base/run_loop.h"
#include "build/build_config.h"
#include "chrome/browser/permissions/permission_request_manager_test_api.h"
#include "chrome/browser/permissions/permission_request_manager.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/content_settings/content_setting_image_model.h"
......
......@@ -9,13 +9,13 @@
#import "base/mac/scoped_nsobject.h"
#include "base/run_loop.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/permissions/permission_request_manager_test_api.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/interactive_test_utils.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include "ui/base/test/ui_controls.h"
#import "ui/base/test/windowed_nsnotification_observer.h"
#include "ui/base/ui_base_features.h"
......
......@@ -104,11 +104,6 @@ void PermissionPromptBubbleView::CloseWithoutNotifyingDelegate() {
GetWidget()->CloseWithReason(views::Widget::ClosedReason::kUnspecified);
}
gfx::NativeWindow PermissionPromptBubbleView::GetNativeWindow() {
views::Widget* widget = GetWidget();
return widget ? widget->GetNativeWindow() : nullptr;
}
void PermissionPromptBubbleView::AddedToWidget() {
if (name_or_origin_.is_origin) {
// There is a risk of URL spoofing from origins that are too wide to fit in
......
......@@ -29,9 +29,6 @@ class PermissionPromptBubbleView : public views::BubbleDialogDelegateView {
// the UI.
void CloseWithoutNotifyingDelegate();
// Returns the gfx::NativeWindow for the bubble's widget.
gfx::NativeWindow GetNativeWindow();
// views::BubbleDialogDelegateView:
void AddedToWidget() override;
bool ShouldShowCloseButton() const override;
......
......@@ -60,10 +60,6 @@ void PermissionPromptImpl::UpdateAnchorPosition() {
prompt_bubble_->UpdateAnchorPosition();
}
gfx::NativeWindow PermissionPromptImpl::GetNativeWindow() {
return prompt_bubble_ ? prompt_bubble_->GetNativeWindow() : nullptr;
}
PermissionPrompt::TabSwitchingBehavior
PermissionPromptImpl::GetTabSwitchingBehavior() {
return PermissionPrompt::TabSwitchingBehavior::
......
......@@ -27,9 +27,12 @@ class PermissionPromptImpl : public PermissionPrompt {
// PermissionPrompt:
void UpdateAnchorPosition() override;
gfx::NativeWindow GetNativeWindow() override;
TabSwitchingBehavior GetTabSwitchingBehavior() override;
PermissionPromptBubbleView* prompt_bubble_for_testing() {
return prompt_bubble_;
}
private:
// The popup bubble. Not owned by this class; it will delete itself when a
// decision is made.
......
......@@ -5311,8 +5311,6 @@ if (!is_android) {
testonly = true
sources = [
"../browser/permissions/permission_request_manager_test_api.cc",
"../browser/permissions/permission_request_manager_test_api.h",
"../browser/ssl/cert_verifier_browser_test.cc",
"../browser/ssl/cert_verifier_browser_test.h",
"../browser/ui/search/instant_test_utils.cc",
......@@ -5336,6 +5334,8 @@ if (!is_android) {
"base/ui_test_utils.h",
"base/web_ui_browser_test.cc",
"base/web_ui_browser_test.h",
"permissions/permission_request_manager_test_api.cc",
"permissions/permission_request_manager_test_api.h",
]
configs += [ "//build/config:precompiled_headers" ]
......
file://chrome/browser/permissions/PERMISSIONS_OWNERS
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/permissions/permission_request_manager_test_api.h"
#include "chrome/test/permissions/permission_request_manager_test_api.h"
#include <memory>
......@@ -11,6 +11,12 @@
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#if defined(TOOLKIT_VIEWS)
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_bubble_view.h"
#include "chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h"
#include "ui/views/widget/widget.h"
#endif
namespace test {
namespace {
......@@ -57,7 +63,16 @@ void PermissionRequestManagerTestApi::AddSimpleRequest(
}
gfx::NativeWindow PermissionRequestManagerTestApi::GetPromptWindow() {
return manager_->view_ ? manager_->view_->GetNativeWindow() : nullptr;
#if defined(TOOLKIT_VIEWS)
PermissionPromptImpl* prompt =
static_cast<PermissionPromptImpl*>(manager_->view_.get());
return prompt ? prompt->prompt_bubble_for_testing()
->GetWidget()
->GetNativeWindow()
: nullptr;
#else
NOTIMPLEMENTED();
#endif
}
void PermissionRequestManagerTestApi::SimulateWebContentsDestroyed() {
......
......@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PERMISSIONS_PERMISSION_REQUEST_MANAGER_TEST_API_H_
#define CHROME_BROWSER_PERMISSIONS_PERMISSION_REQUEST_MANAGER_TEST_API_H_
#ifndef CHROME_TEST_PERMISSIONS_PERMISSION_REQUEST_MANAGER_TEST_API_H_
#define CHROME_TEST_PERMISSIONS_PERMISSION_REQUEST_MANAGER_TEST_API_H_
#include "base/macros.h"
#include "chrome/browser/permissions/permission_request_manager.h"
......@@ -27,8 +27,8 @@ class PermissionRequestManagerTestApi {
// NOTIFICATIONS, GEOLOCATON, or PLUGINS.
void AddSimpleRequest(ContentSettingsType type);
// Return the bubble window for the permission prompt or null if there is no
// prompt currently showing.
// Return the NativeWindow for the permission prompt bubble, or nullptr if
// there is no prompt currently showing.
gfx::NativeWindow GetPromptWindow();
void SimulateWebContentsDestroyed();
......@@ -41,4 +41,4 @@ class PermissionRequestManagerTestApi {
} // namespace test
#endif // CHROME_BROWSER_PERMISSIONS_PERMISSION_REQUEST_MANAGER_TEST_API_H_
#endif // CHROME_TEST_PERMISSIONS_PERMISSION_REQUEST_MANAGER_TEST_API_H_
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