Commit 5f4895f5 authored by Chris Lu's avatar Chris Lu Committed by Commit Bot

[ios] Turn on FullscreenControllerBrowserScoped by default

Bug: 790886
Change-Id: Ide1eee5634376b90cfa820bb61644c871969ff86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2358589Reviewed-by: default avatarSergio Collazos <sczs@chromium.org>
Commit-Queue: Chris Lu <thegreenfrog@chromium.org>
Auto-Submit: Chris Lu <thegreenfrog@chromium.org>
Cr-Commit-Position: refs/heads/master@{#800354}
parent 01b7c141
...@@ -19,7 +19,7 @@ const base::Feature kSmoothScrollingDefault{"FullscreenSmoothScrollingDefault", ...@@ -19,7 +19,7 @@ const base::Feature kSmoothScrollingDefault{"FullscreenSmoothScrollingDefault",
base::FEATURE_ENABLED_BY_DEFAULT}; base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kFullscreenControllerBrowserScoped{ const base::Feature kFullscreenControllerBrowserScoped{
"FullscreenControllerBrowserScoped", base::FEATURE_DISABLED_BY_DEFAULT}; "FullscreenControllerBrowserScoped", base::FEATURE_ENABLED_BY_DEFAULT};
bool ShouldUseSmoothScrolling() { bool ShouldUseSmoothScrolling() {
return base::FeatureList::IsEnabled(kSmoothScrollingDefault); return base::FeatureList::IsEnabled(kSmoothScrollingDefault);
......
...@@ -137,6 +137,7 @@ source_set("unit_tests") { ...@@ -137,6 +137,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list",
"//ios/chrome/browser/web_state_list:test_support", "//ios/chrome/browser/web_state_list:test_support",
"//ios/chrome/test:test_support", "//ios/chrome/test:test_support",
"//ios/web/common",
"//ios/web/public/test/fakes", "//ios/web/public/test/fakes",
"//testing/gtest", "//testing/gtest",
"//testing/gtest", "//testing/gtest",
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#import "ios/chrome/browser/ui/infobars/infobar_container_coordinator.h" #import "ios/chrome/browser/ui/infobars/infobar_container_coordinator.h"
#import <WebKit/WebKit.h>
#import "base/test/ios/wait_util.h" #import "base/test/ios/wait_util.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "base/test/task_environment.h" #include "base/test/task_environment.h"
...@@ -27,8 +29,11 @@ ...@@ -27,8 +29,11 @@
#import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list.h"
#import "ios/chrome/browser/web_state_list/web_state_opener.h" #import "ios/chrome/browser/web_state_list/web_state_opener.h"
#import "ios/chrome/test/scoped_key_window.h" #import "ios/chrome/test/scoped_key_window.h"
#import "ios/web/common/crw_web_view_content_view.h"
#import "ios/web/public/test/fakes/test_navigation_manager.h" #import "ios/web/public/test/fakes/test_navigation_manager.h"
#import "ios/web/public/test/fakes/test_web_state.h" #import "ios/web/public/test/fakes/test_web_state.h"
#import "ios/web/public/ui/crw_web_view_proxy.h"
#import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h" #include "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h" #import "third_party/ocmock/OCMock/OCMock.h"
...@@ -69,7 +74,13 @@ class InfobarContainerCoordinatorTest : public PlatformTest { ...@@ -69,7 +74,13 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
InfobarContainerCoordinatorTest() InfobarContainerCoordinatorTest()
: browser_(std::make_unique<TestBrowser>()), : browser_(std::make_unique<TestBrowser>()),
base_view_controller_([[FakeBaseViewController alloc] init]), base_view_controller_([[FakeBaseViewController alloc] init]),
positioner_([[TestContainerCoordinatorPositioner alloc] init]) { positioner_([[TestContainerCoordinatorPositioner alloc] init]),
web_view_([[WKWebView alloc]
initWithFrame:scoped_window_.Get().bounds
configuration:[[WKWebViewConfiguration alloc] init]]),
content_view_([[CRWWebViewContentView alloc]
initWithWebView:web_view_
scrollView:web_view_.scrollView]) {
// Enable kIOSInfobarUIReboot flag. // Enable kIOSInfobarUIReboot flag.
feature_list_.InitWithFeatures({kIOSInfobarUIReboot}, feature_list_.InitWithFeatures({kIOSInfobarUIReboot},
{kInfobarUIRebootOnlyiOS13}); {kInfobarUIRebootOnlyiOS13});
...@@ -84,6 +95,15 @@ class InfobarContainerCoordinatorTest : public PlatformTest { ...@@ -84,6 +95,15 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
navigation_manager_ = navigation_manager.get(); navigation_manager_ = navigation_manager.get();
web_state->SetNavigationManager(std::move(navigation_manager)); web_state->SetNavigationManager(std::move(navigation_manager));
web_state->SetBrowserState(browser_->GetBrowserState()); web_state->SetBrowserState(browser_->GetBrowserState());
web_state->SetView(content_view_);
CRWWebViewScrollViewProxy* scroll_view_proxy =
[[CRWWebViewScrollViewProxy alloc] init];
UIScrollView* scroll_view = [[UIScrollView alloc] init];
[scroll_view_proxy setScrollView:scroll_view];
id web_view_proxy_mock = OCMProtocolMock(@protocol(CRWWebViewProxy));
[[[web_view_proxy_mock stub] andReturn:scroll_view_proxy] scrollViewProxy];
web_state->SetWebViewProxy(web_view_proxy_mock);
browser_->GetWebStateList()->InsertWebState(0, std::move(web_state), browser_->GetWebStateList()->InsertWebState(0, std::move(web_state),
WebStateList::INSERT_NO_FLAGS, WebStateList::INSERT_NO_FLAGS,
WebStateOpener()); WebStateOpener());
...@@ -187,6 +207,14 @@ class InfobarContainerCoordinatorTest : public PlatformTest { ...@@ -187,6 +207,14 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
void AddSecondWebstate() { void AddSecondWebstate() {
std::unique_ptr<web::TestWebState> second_web_state = std::unique_ptr<web::TestWebState> second_web_state =
std::make_unique<web::TestWebState>(); std::make_unique<web::TestWebState>();
second_web_state->SetView(content_view_);
CRWWebViewScrollViewProxy* scroll_view_proxy =
[[CRWWebViewScrollViewProxy alloc] init];
UIScrollView* scroll_view = [[UIScrollView alloc] init];
[scroll_view_proxy setScrollView:scroll_view];
id web_view_proxy_mock = OCMProtocolMock(@protocol(CRWWebViewProxy));
[[[web_view_proxy_mock stub] andReturn:scroll_view_proxy] scrollViewProxy];
second_web_state->SetWebViewProxy(web_view_proxy_mock);
InfoBarManagerImpl::CreateForWebState(second_web_state.get()); InfoBarManagerImpl::CreateForWebState(second_web_state.get());
InfobarBadgeTabHelper::CreateForWebState(second_web_state.get()); InfobarBadgeTabHelper::CreateForWebState(second_web_state.get());
browser_->GetWebStateList()->InsertWebState(1, std::move(second_web_state), browser_->GetWebStateList()->InsertWebState(1, std::move(second_web_state),
...@@ -221,6 +249,9 @@ class InfobarContainerCoordinatorTest : public PlatformTest { ...@@ -221,6 +249,9 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> infobar_delegate_; std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> infobar_delegate_;
ConfirmInfoBarController* legacy_controller_; ConfirmInfoBarController* legacy_controller_;
std::unique_ptr<ConfirmInfoBarDelegate> legacy_infobar_delegate_; std::unique_ptr<ConfirmInfoBarDelegate> legacy_infobar_delegate_;
ScopedKeyWindow scoped_window_;
WKWebView* web_view_ = nil;
CRWWebViewContentView* content_view_ = nil;
}; };
// Tests infobarBannerState is InfobarBannerPresentationState::Presented once an // Tests infobarBannerState is InfobarBannerPresentationState::Presented once an
......
...@@ -142,6 +142,7 @@ source_set("unit_tests") { ...@@ -142,6 +142,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/ui/overlays/test_modality", "//ios/chrome/browser/ui/overlays/test_modality",
"//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list",
"//ios/chrome/test:test_support", "//ios/chrome/test:test_support",
"//ios/web/common",
"//ios/web/public/test", "//ios/web/public/test",
"//ios/web/public/test/fakes", "//ios/web/public/test/fakes",
"//testing/gmock", "//testing/gmock",
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#import "ios/chrome/browser/ui/overlays/overlay_presentation_context_fullscreen_disabler.h" #import "ios/chrome/browser/ui/overlays/overlay_presentation_context_fullscreen_disabler.h"
#import <WebKit/WebKit.h>
#import "ios/chrome/browser/main/test_browser.h" #import "ios/chrome/browser/main/test_browser.h"
#include "ios/chrome/browser/overlays/public/overlay_request.h" #include "ios/chrome/browser/overlays/public/overlay_request.h"
#include "ios/chrome/browser/overlays/public/overlay_request_queue.h" #include "ios/chrome/browser/overlays/public/overlay_request_queue.h"
...@@ -13,9 +15,14 @@ ...@@ -13,9 +15,14 @@
#import "ios/chrome/browser/ui/fullscreen/fullscreen_features.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_features.h"
#import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list.h"
#import "ios/chrome/browser/web_state_list/web_state_opener.h" #import "ios/chrome/browser/web_state_list/web_state_opener.h"
#import "ios/chrome/test/scoped_key_window.h"
#import "ios/web/common/crw_web_view_content_view.h"
#import "ios/web/public/test/fakes/test_web_state.h" #import "ios/web/public/test/fakes/test_web_state.h"
#include "ios/web/public/test/web_task_environment.h" #include "ios/web/public/test/web_task_environment.h"
#import "ios/web/public/ui/crw_web_view_proxy.h"
#import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
#include "testing/platform_test.h" #include "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"
#if !defined(__has_feature) || !__has_feature(objc_arc) #if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support." #error "This file requires ARC support."
...@@ -32,14 +39,31 @@ DEFINE_TEST_OVERLAY_REQUEST_CONFIG(kConfig); ...@@ -32,14 +39,31 @@ DEFINE_TEST_OVERLAY_REQUEST_CONFIG(kConfig);
class OverlayPresentationContextFullscreenDisablerTest : public PlatformTest { class OverlayPresentationContextFullscreenDisablerTest : public PlatformTest {
public: public:
OverlayPresentationContextFullscreenDisablerTest() OverlayPresentationContextFullscreenDisablerTest()
: disabler_(&browser_, kModality) { : disabler_(&browser_, kModality),
web_view_([[WKWebView alloc]
initWithFrame:scoped_window_.Get().bounds
configuration:[[WKWebViewConfiguration alloc] init]]),
content_view_([[CRWWebViewContentView alloc]
initWithWebView:web_view_
scrollView:web_view_.scrollView]) {
// Set up the fake presentation context so OverlayPresenterObserver // Set up the fake presentation context so OverlayPresenterObserver
// callbacks are sent. // callbacks are sent.
overlay_presenter()->SetPresentationContext(&presentation_context_); overlay_presenter()->SetPresentationContext(&presentation_context_);
std::unique_ptr<web::TestWebState> web_state =
std::make_unique<web::TestWebState>();
web_state->SetView(content_view_);
CRWWebViewScrollViewProxy* scroll_view_proxy =
[[CRWWebViewScrollViewProxy alloc] init];
UIScrollView* scroll_view = [[UIScrollView alloc] init];
[scroll_view_proxy setScrollView:scroll_view];
id web_view_proxy_mock = OCMProtocolMock(@protocol(CRWWebViewProxy));
[[[web_view_proxy_mock stub] andReturn:scroll_view_proxy] scrollViewProxy];
web_state->SetWebViewProxy(web_view_proxy_mock);
// Insert and activate a WebState. // Insert and activate a WebState.
browser_.GetWebStateList()->InsertWebState( browser_.GetWebStateList()->InsertWebState(0, std::move(web_state),
0, std::make_unique<web::TestWebState>(), WebStateList::INSERT_ACTIVATE, WebStateList::INSERT_ACTIVATE,
WebStateOpener()); WebStateOpener());
} }
~OverlayPresentationContextFullscreenDisablerTest() override { ~OverlayPresentationContextFullscreenDisablerTest() override {
overlay_presenter()->SetPresentationContext(nullptr); overlay_presenter()->SetPresentationContext(nullptr);
...@@ -66,6 +90,9 @@ class OverlayPresentationContextFullscreenDisablerTest : public PlatformTest { ...@@ -66,6 +90,9 @@ class OverlayPresentationContextFullscreenDisablerTest : public PlatformTest {
TestBrowser browser_; TestBrowser browser_;
OverlayContainerFullscreenDisabler disabler_; OverlayContainerFullscreenDisabler disabler_;
FakeOverlayPresentationContext presentation_context_; FakeOverlayPresentationContext presentation_context_;
ScopedKeyWindow scoped_window_;
WKWebView* web_view_ = nil;
CRWWebViewContentView* content_view_ = nil;
}; };
// Tests that OverlayPresentationContextFullscreenDisabler disables fullscreen // Tests that OverlayPresentationContextFullscreenDisabler disables fullscreen
......
...@@ -63,6 +63,7 @@ source_set("unit_tests") { ...@@ -63,6 +63,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/browser_state:test_support", "//ios/chrome/browser/browser_state:test_support",
"//ios/chrome/browser/main:test_support", "//ios/chrome/browser/main:test_support",
"//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list",
"//ios/chrome/test:test_support",
"//ios/web/common", "//ios/web/common",
"//ios/web/public/test", "//ios/web/public/test",
"//testing/gtest", "//testing/gtest",
......
...@@ -4,18 +4,24 @@ ...@@ -4,18 +4,24 @@
#import "ios/chrome/browser/ui/side_swipe/side_swipe_controller.h" #import "ios/chrome/browser/ui/side_swipe/side_swipe_controller.h"
#import <WebKit/WebKit.h>
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h" #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h" #include "ios/chrome/browser/chrome_url_constants.h"
#import "ios/chrome/browser/main/test_browser.h" #import "ios/chrome/browser/main/test_browser.h"
#import "ios/chrome/browser/web_state_list/web_state_list.h" #import "ios/chrome/browser/web_state_list/web_state_list.h"
#import "ios/chrome/browser/web_state_list/web_state_list_delegate.h" #import "ios/chrome/browser/web_state_list/web_state_list_delegate.h"
#import "ios/chrome/browser/web_state_list/web_state_opener.h" #import "ios/chrome/browser/web_state_list/web_state_opener.h"
#import "ios/chrome/test/scoped_key_window.h"
#import "ios/web/common/crw_web_view_content_view.h"
#include "ios/web/common/features.h" #include "ios/web/common/features.h"
#import "ios/web/public/navigation/navigation_item.h" #import "ios/web/public/navigation/navigation_item.h"
#import "ios/web/public/test/fakes/fake_navigation_context.h" #import "ios/web/public/test/fakes/fake_navigation_context.h"
#import "ios/web/public/test/fakes/test_navigation_manager.h" #import "ios/web/public/test/fakes/test_navigation_manager.h"
#import "ios/web/public/test/fakes/test_web_state.h" #import "ios/web/public/test/fakes/test_web_state.h"
#include "ios/web/public/test/web_task_environment.h" #include "ios/web/public/test/web_task_environment.h"
#import "ios/web/public/ui/crw_web_view_proxy.h"
#import "ios/web/public/ui/crw_web_view_scroll_view_proxy.h"
#include "testing/platform_test.h" #include "testing/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h" #import "third_party/ocmock/OCMock/OCMock.h"
#import "third_party/ocmock/gtest_support.h" #import "third_party/ocmock/gtest_support.h"
...@@ -40,9 +46,23 @@ class TestWebStateListDelegate : public WebStateListDelegate { ...@@ -40,9 +46,23 @@ class TestWebStateListDelegate : public WebStateListDelegate {
class SideSwipeControllerTest : public PlatformTest { class SideSwipeControllerTest : public PlatformTest {
public: public:
void SetUp() override { SideSwipeControllerTest()
: web_view_([[WKWebView alloc]
initWithFrame:scoped_window_.Get().bounds
configuration:[[WKWebViewConfiguration alloc] init]]),
content_view_([[CRWWebViewContentView alloc]
initWithWebView:web_view_
scrollView:web_view_.scrollView]) {
std::unique_ptr<web::TestWebState> original_web_state( std::unique_ptr<web::TestWebState> original_web_state(
std::make_unique<web::TestWebState>()); std::make_unique<web::TestWebState>());
original_web_state->SetView(content_view_);
CRWWebViewScrollViewProxy* scroll_view_proxy =
[[CRWWebViewScrollViewProxy alloc] init];
UIScrollView* scroll_view = [[UIScrollView alloc] init];
[scroll_view_proxy setScrollView:scroll_view];
id web_view_proxy_mock = OCMProtocolMock(@protocol(CRWWebViewProxy));
[[[web_view_proxy_mock stub] andReturn:scroll_view_proxy] scrollViewProxy];
original_web_state->SetWebViewProxy(web_view_proxy_mock);
web_state_list_ = std::make_unique<WebStateList>(&web_state_list_delegate_); web_state_list_ = std::make_unique<WebStateList>(&web_state_list_delegate_);
web_state_list_->InsertWebState(0, std::move(original_web_state), web_state_list_->InsertWebState(0, std::move(original_web_state),
...@@ -69,9 +89,11 @@ class SideSwipeControllerTest : public PlatformTest { ...@@ -69,9 +89,11 @@ class SideSwipeControllerTest : public PlatformTest {
TestWebStateListDelegate web_state_list_delegate_; TestWebStateListDelegate web_state_list_delegate_;
std::unique_ptr<WebStateList> web_state_list_; std::unique_ptr<WebStateList> web_state_list_;
std::unique_ptr<Browser> browser_; std::unique_ptr<Browser> browser_;
UIView* view_; UIView* view_;
SideSwipeController* side_swipe_controller_; SideSwipeController* side_swipe_controller_;
ScopedKeyWindow scoped_window_;
WKWebView* web_view_ = nil;
CRWWebViewContentView* content_view_ = nil;
}; };
TEST_F(SideSwipeControllerTest, TestConstructor) { TEST_F(SideSwipeControllerTest, TestConstructor) {
...@@ -148,6 +170,14 @@ TEST_F(SideSwipeControllerTest, ObserversTriggerStateUpdate) { ...@@ -148,6 +170,14 @@ TEST_F(SideSwipeControllerTest, ObserversTriggerStateUpdate) {
ASSERT_FALSE(side_swipe_controller_.trailingEdgeNavigationEnabled); ASSERT_FALSE(side_swipe_controller_.trailingEdgeNavigationEnabled);
auto testWebState = std::make_unique<web::TestWebState>(); auto testWebState = std::make_unique<web::TestWebState>();
testWebState->SetView(content_view_);
CRWWebViewScrollViewProxy* scroll_view_proxy =
[[CRWWebViewScrollViewProxy alloc] init];
UIScrollView* scroll_view = [[UIScrollView alloc] init];
[scroll_view_proxy setScrollView:scroll_view];
id web_view_proxy_mock = OCMProtocolMock(@protocol(CRWWebViewProxy));
[[[web_view_proxy_mock stub] andReturn:scroll_view_proxy] scrollViewProxy];
testWebState->SetWebViewProxy(web_view_proxy_mock);
web::TestWebState* testWebStatePtr = testWebState.get(); web::TestWebState* testWebStatePtr = testWebState.get();
auto testNavigationManager = std::make_unique<web::TestNavigationManager>(); auto testNavigationManager = std::make_unique<web::TestNavigationManager>();
std::unique_ptr<web::NavigationItem> item = web::NavigationItem::Create(); std::unique_ptr<web::NavigationItem> item = web::NavigationItem::Create();
......
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