Commit f2729620 authored by Kurt Horimoto's avatar Kurt Horimoto Committed by Commit Bot

[iOS] Adds TestFullscreenController functionality.

This class now supports:
- enabling/disabling a FullscreenModel,
- sending broadcast values,
- and notifying observers of service shutdown.

Bug: none
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I6d0b6964599aee1606dd992577ddc43d4ce43a4d
Reviewed-on: https://chromium-review.googlesource.com/1185977
Commit-Queue: Kurt Horimoto <kkhorimoto@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585657}
parent 7f617841
...@@ -20,6 +20,8 @@ source_set("test") { ...@@ -20,6 +20,8 @@ source_set("test") {
configs += [ "//build/config/compiler:enable_arc" ] configs += [ "//build/config/compiler:enable_arc" ]
deps = [ deps = [
"//base",
"//ios/chrome/browser/ui/broadcaster",
"//ios/chrome/browser/ui/fullscreen", "//ios/chrome/browser/ui/fullscreen",
"//ios/chrome/browser/ui/fullscreen:internal", "//ios/chrome/browser/ui/fullscreen:internal",
"//ios/chrome/browser/ui/fullscreen:ui", "//ios/chrome/browser/ui/fullscreen:ui",
......
...@@ -7,10 +7,14 @@ ...@@ -7,10 +7,14 @@
#import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h"
#include "base/observer_list.h"
class FullscreenModel; class FullscreenModel;
// Test version of FullscreenController that enables and disabled the // Test version of FullscreenController with limited functionality:
// FullscreenModel passed on initialization. // - Enables/disables a FullscreenModel.
// - Exposes a broadcaster.
// - Supports FullscreenControllerObserver::FullscreenControllerWillShutDown().
class TestFullscreenController : public FullscreenController { class TestFullscreenController : public FullscreenController {
public: public:
explicit TestFullscreenController(FullscreenModel* model); explicit TestFullscreenController(FullscreenModel* model);
...@@ -27,9 +31,16 @@ class TestFullscreenController : public FullscreenController { ...@@ -27,9 +31,16 @@ class TestFullscreenController : public FullscreenController {
CGFloat GetProgress() const override; CGFloat GetProgress() const override;
void ResetModel() override; void ResetModel() override;
// KeyedService:
void Shutdown() override;
private: private:
// The model. // The model.
FullscreenModel* model_; FullscreenModel* model_ = nullptr;
// The broadcaster.
ChromeBroadcaster* broadcaster_ = nil;
// The observers.
base::ObserverList<FullscreenControllerObserver>::Unchecked observers_;
}; };
#endif // IOS_CHROME_BROWSER_UI_FULLSCREEN_TEST_TEST_FULLSCREEN_CONTROLLER_H_ #endif // IOS_CHROME_BROWSER_UI_FULLSCREEN_TEST_TEST_FULLSCREEN_CONTROLLER_H_
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#import "ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h" #import "ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h"
#import "ios/chrome/browser/ui/broadcaster/chrome_broadcaster.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_controller_observer.h"
#import "ios/chrome/browser/ui/fullscreen/fullscreen_model.h" #import "ios/chrome/browser/ui/fullscreen/fullscreen_model.h"
#if !defined(__has_feature) || !__has_feature(objc_arc) #if !defined(__has_feature) || !__has_feature(objc_arc)
...@@ -11,38 +13,53 @@ ...@@ -11,38 +13,53 @@
#endif #endif
TestFullscreenController::TestFullscreenController(FullscreenModel* model) TestFullscreenController::TestFullscreenController(FullscreenModel* model)
: FullscreenController(), model_(model) {} : FullscreenController(),
model_(model),
broadcaster_([[ChromeBroadcaster alloc] init]) {}
TestFullscreenController::~TestFullscreenController() = default; TestFullscreenController::~TestFullscreenController() = default;
ChromeBroadcaster* TestFullscreenController::broadcaster() { ChromeBroadcaster* TestFullscreenController::broadcaster() {
return nil; return broadcaster_;
} }
void TestFullscreenController::SetWebStateList(WebStateList* web_state_list) {} void TestFullscreenController::SetWebStateList(WebStateList* web_state_list) {}
void TestFullscreenController::AddObserver( void TestFullscreenController::AddObserver(
FullscreenControllerObserver* observer) {} FullscreenControllerObserver* observer) {
observers_.AddObserver(observer);
}
void TestFullscreenController::RemoveObserver( void TestFullscreenController::RemoveObserver(
FullscreenControllerObserver* observer) {} FullscreenControllerObserver* observer) {
observers_.RemoveObserver(observer);
}
bool TestFullscreenController::IsEnabled() const { bool TestFullscreenController::IsEnabled() const {
return model_->enabled(); return model_ && model_->enabled();
} }
void TestFullscreenController::IncrementDisabledCounter() { void TestFullscreenController::IncrementDisabledCounter() {
model_->IncrementDisabledCounter(); if (model_)
model_->IncrementDisabledCounter();
} }
void TestFullscreenController::DecrementDisabledCounter() { void TestFullscreenController::DecrementDisabledCounter() {
model_->DecrementDisabledCounter(); if (model_)
model_->DecrementDisabledCounter();
} }
CGFloat TestFullscreenController::GetProgress() const { CGFloat TestFullscreenController::GetProgress() const {
return model_->progress(); return model_ ? model_->progress() : 0.0;
} }
void TestFullscreenController::ResetModel() { void TestFullscreenController::ResetModel() {
model_->ResetForNavigation(); if (model_)
model_->ResetForNavigation();
}
void TestFullscreenController::Shutdown() {
for (auto& observer : observers_) {
observer.FullscreenControllerWillShutDown(this);
}
} }
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