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") {
configs += [ "//build/config/compiler:enable_arc" ]
deps = [
"//base",
"//ios/chrome/browser/ui/broadcaster",
"//ios/chrome/browser/ui/fullscreen",
"//ios/chrome/browser/ui/fullscreen:internal",
"//ios/chrome/browser/ui/fullscreen:ui",
......
......@@ -7,10 +7,14 @@
#import "ios/chrome/browser/ui/fullscreen/fullscreen_controller.h"
#include "base/observer_list.h"
class FullscreenModel;
// Test version of FullscreenController that enables and disabled the
// FullscreenModel passed on initialization.
// Test version of FullscreenController with limited functionality:
// - Enables/disables a FullscreenModel.
// - Exposes a broadcaster.
// - Supports FullscreenControllerObserver::FullscreenControllerWillShutDown().
class TestFullscreenController : public FullscreenController {
public:
explicit TestFullscreenController(FullscreenModel* model);
......@@ -27,9 +31,16 @@ class TestFullscreenController : public FullscreenController {
CGFloat GetProgress() const override;
void ResetModel() override;
// KeyedService:
void Shutdown() override;
private:
// 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_
......@@ -4,6 +4,8 @@
#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"
#if !defined(__has_feature) || !__has_feature(objc_arc)
......@@ -11,38 +13,53 @@
#endif
TestFullscreenController::TestFullscreenController(FullscreenModel* model)
: FullscreenController(), model_(model) {}
: FullscreenController(),
model_(model),
broadcaster_([[ChromeBroadcaster alloc] init]) {}
TestFullscreenController::~TestFullscreenController() = default;
ChromeBroadcaster* TestFullscreenController::broadcaster() {
return nil;
return broadcaster_;
}
void TestFullscreenController::SetWebStateList(WebStateList* web_state_list) {}
void TestFullscreenController::AddObserver(
FullscreenControllerObserver* observer) {}
FullscreenControllerObserver* observer) {
observers_.AddObserver(observer);
}
void TestFullscreenController::RemoveObserver(
FullscreenControllerObserver* observer) {}
FullscreenControllerObserver* observer) {
observers_.RemoveObserver(observer);
}
bool TestFullscreenController::IsEnabled() const {
return model_->enabled();
return model_ && model_->enabled();
}
void TestFullscreenController::IncrementDisabledCounter() {
model_->IncrementDisabledCounter();
if (model_)
model_->IncrementDisabledCounter();
}
void TestFullscreenController::DecrementDisabledCounter() {
model_->DecrementDisabledCounter();
if (model_)
model_->DecrementDisabledCounter();
}
CGFloat TestFullscreenController::GetProgress() const {
return model_->progress();
return model_ ? model_->progress() : 0.0;
}
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