Skip to content

Commit

Permalink
[iOS] Adds TestFullscreenController functionality.
Browse files Browse the repository at this point in the history
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: Eugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585657}
  • Loading branch information
Kurt Horimoto authored and Commit Bot committed Aug 23, 2018
1 parent 7f61784 commit f272962
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 12 deletions.
2 changes: 2 additions & 0 deletions ios/chrome/browser/ui/fullscreen/test/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
17 changes: 14 additions & 3 deletions ios/chrome/browser/ui/fullscreen/test/test_fullscreen_controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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_
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,62 @@

#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)
#error "This file requires ARC support."
#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);
}
}

0 comments on commit f272962

Please sign in to comment.