Commit 7a97ddbb authored by Chris Lu's avatar Chris Lu Committed by Commit Bot

Reland "[ios] Turn on FullscreenControllerBrowserScoped by default"

This is a reland of 5f4895f5

Original change's description:
> [ios] Turn on FullscreenControllerBrowserScoped by default
>
> Bug: 790886
> Change-Id: Ide1eee5634376b90cfa820bb61644c871969ff86
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2358589
> Reviewed-by: Sergio 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}

Bug: 790886
Change-Id: I24ea5c47f97e1060dc1c2dd4e83f4447595611b6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2380138
Commit-Queue: Chris Lu <thegreenfrog@chromium.org>
Commit-Queue: Rohit Rao <rohitrao@chromium.org>
Auto-Submit: Chris Lu <thegreenfrog@chromium.org>
Reviewed-by: default avatarRohit Rao <rohitrao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804959}
parent b5173c95
......@@ -19,7 +19,7 @@ const base::Feature kSmoothScrollingDefault{"FullscreenSmoothScrollingDefault",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kFullscreenControllerBrowserScoped{
"FullscreenControllerBrowserScoped", base::FEATURE_DISABLED_BY_DEFAULT};
"FullscreenControllerBrowserScoped", base::FEATURE_ENABLED_BY_DEFAULT};
bool ShouldUseSmoothScrolling() {
return base::FeatureList::IsEnabled(kSmoothScrollingDefault);
......
......@@ -137,6 +137,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/web_state_list",
"//ios/chrome/browser/web_state_list:test_support",
"//ios/chrome/test:test_support",
"//ios/web/common",
"//ios/web/public/test/fakes",
"//testing/gtest",
"//testing/gtest",
......
......@@ -4,6 +4,8 @@
#import "ios/chrome/browser/ui/infobars/infobar_container_coordinator.h"
#import <WebKit/WebKit.h>
#import "base/test/ios/wait_util.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/task_environment.h"
......@@ -27,8 +29,11 @@
#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/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_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/platform_test.h"
#import "third_party/ocmock/OCMock/OCMock.h"
......@@ -69,7 +74,13 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
InfobarContainerCoordinatorTest()
: browser_(std::make_unique<TestBrowser>()),
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.
feature_list_.InitWithFeatures({kIOSInfobarUIReboot},
{kInfobarUIRebootOnlyiOS13});
......@@ -84,6 +95,15 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
navigation_manager_ = navigation_manager.get();
web_state->SetNavigationManager(std::move(navigation_manager));
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),
WebStateList::INSERT_NO_FLAGS,
WebStateOpener());
......@@ -187,6 +207,14 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
void AddSecondWebstate() {
std::unique_ptr<web::TestWebState> second_web_state =
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());
InfobarBadgeTabHelper::CreateForWebState(second_web_state.get());
browser_->GetWebStateList()->InsertWebState(1, std::move(second_web_state),
......@@ -221,6 +249,9 @@ class InfobarContainerCoordinatorTest : public PlatformTest {
std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> infobar_delegate_;
ConfirmInfoBarController* legacy_controller_;
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
......
......@@ -142,6 +142,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/ui/overlays/test_modality",
"//ios/chrome/browser/web_state_list",
"//ios/chrome/test:test_support",
"//ios/web/common",
"//ios/web/public/test",
"//ios/web/public/test/fakes",
"//testing/gmock",
......
......@@ -4,6 +4,8 @@
#import "ios/chrome/browser/ui/overlays/overlay_presentation_context_fullscreen_disabler.h"
#import <WebKit/WebKit.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_queue.h"
......@@ -13,9 +15,14 @@
#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_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"
#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"
#import "third_party/ocmock/OCMock/OCMock.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
......@@ -32,14 +39,31 @@ DEFINE_TEST_OVERLAY_REQUEST_CONFIG(kConfig);
class OverlayPresentationContextFullscreenDisablerTest : public PlatformTest {
public:
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
// callbacks are sent.
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.
browser_.GetWebStateList()->InsertWebState(
0, std::make_unique<web::TestWebState>(), WebStateList::INSERT_ACTIVATE,
WebStateOpener());
browser_.GetWebStateList()->InsertWebState(0, std::move(web_state),
WebStateList::INSERT_ACTIVATE,
WebStateOpener());
}
~OverlayPresentationContextFullscreenDisablerTest() override {
overlay_presenter()->SetPresentationContext(nullptr);
......@@ -66,6 +90,9 @@ class OverlayPresentationContextFullscreenDisablerTest : public PlatformTest {
TestBrowser browser_;
OverlayContainerFullscreenDisabler disabler_;
FakeOverlayPresentationContext presentation_context_;
ScopedKeyWindow scoped_window_;
WKWebView* web_view_ = nil;
CRWWebViewContentView* content_view_ = nil;
};
// Tests that OverlayPresentationContextFullscreenDisabler disables fullscreen
......
......@@ -63,6 +63,7 @@ source_set("unit_tests") {
"//ios/chrome/browser/browser_state:test_support",
"//ios/chrome/browser/main:test_support",
"//ios/chrome/browser/web_state_list",
"//ios/chrome/test:test_support",
"//ios/web/common",
"//ios/web/public/test",
"//testing/gtest",
......
......@@ -4,18 +4,24 @@
#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/chrome_url_constants.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_delegate.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"
#import "ios/web/public/navigation/navigation_item.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_web_state.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"
#import "third_party/ocmock/OCMock/OCMock.h"
#import "third_party/ocmock/gtest_support.h"
......@@ -40,9 +46,23 @@ class TestWebStateListDelegate : public WebStateListDelegate {
class SideSwipeControllerTest : public PlatformTest {
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::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_->InsertWebState(0, std::move(original_web_state),
......@@ -69,9 +89,11 @@ class SideSwipeControllerTest : public PlatformTest {
TestWebStateListDelegate web_state_list_delegate_;
std::unique_ptr<WebStateList> web_state_list_;
std::unique_ptr<Browser> browser_;
UIView* view_;
SideSwipeController* side_swipe_controller_;
ScopedKeyWindow scoped_window_;
WKWebView* web_view_ = nil;
CRWWebViewContentView* content_view_ = nil;
};
TEST_F(SideSwipeControllerTest, TestConstructor) {
......@@ -148,6 +170,14 @@ TEST_F(SideSwipeControllerTest, ObserversTriggerStateUpdate) {
ASSERT_FALSE(side_swipe_controller_.trailingEdgeNavigationEnabled);
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();
auto testNavigationManager = std::make_unique<web::TestNavigationManager>();
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