blob: 89a7b77827eaf8951ab7b994e983d9615785e5e7 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/highlighter/highlighter_controller_test_api.h"
#include "ash/components/fast_ink/fast_ink_points.h"
#include "ash/highlighter/highlighter_controller.h"
#include "ash/highlighter/highlighter_view.h"
#include "base/timer/timer.h"
namespace ash {
HighlighterControllerTestApi::HighlighterControllerTestApi(
HighlighterController* instance)
: binding_(this), instance_(instance) {
AttachClient();
}
HighlighterControllerTestApi::~HighlighterControllerTestApi() {
if (binding_.is_bound())
DetachClient();
if (instance_->enabled())
instance_->SetEnabled(false);
instance_->DestroyPointerView();
}
void HighlighterControllerTestApi::AttachClient() {
DCHECK(!binding_.is_bound());
DCHECK(!highlighter_controller_);
instance_->BindRequest(mojo::MakeRequest(&highlighter_controller_));
ash::mojom::HighlighterControllerClientPtr client;
binding_.Bind(mojo::MakeRequest(&client));
highlighter_controller_->SetClient(std::move(client));
highlighter_controller_.FlushForTesting();
}
void HighlighterControllerTestApi::DetachClient() {
DCHECK(binding_.is_bound());
DCHECK(highlighter_controller_);
highlighter_controller_ = nullptr;
binding_.Close();
instance_->FlushMojoForTesting();
}
void HighlighterControllerTestApi::SetEnabled(bool enabled) {
instance_->SetEnabled(enabled);
}
void HighlighterControllerTestApi::DestroyPointerView() {
instance_->DestroyPointerView();
}
void HighlighterControllerTestApi::SimulateInterruptedStrokeTimeout() {
if (!instance_->interrupted_stroke_timer_)
return;
instance_->interrupted_stroke_timer_->Stop();
instance_->RecognizeGesture();
}
bool HighlighterControllerTestApi::IsShowingHighlighter() const {
return instance_->highlighter_view_.get();
}
bool HighlighterControllerTestApi::IsFadingAway() const {
return IsShowingHighlighter() && instance_->highlighter_view_->animating();
}
bool HighlighterControllerTestApi::IsShowingSelectionResult() const {
return instance_->result_view_.get();
}
bool HighlighterControllerTestApi::IsWaitingToResumeStroke() const {
return instance_->interrupted_stroke_timer_ &&
instance_->interrupted_stroke_timer_->IsRunning();
}
const fast_ink::FastInkPoints& HighlighterControllerTestApi::points() const {
return instance_->highlighter_view_->points_;
}
const fast_ink::FastInkPoints& HighlighterControllerTestApi::predicted_points()
const {
return instance_->highlighter_view_->predicted_points_;
}
bool HighlighterControllerTestApi::HandleEnabledStateChangedCalled() {
instance_->FlushMojoForTesting();
return handle_enabled_state_changed_called_;
}
bool HighlighterControllerTestApi::HandleSelectionCalled() {
instance_->FlushMojoForTesting();
return handle_selection_called_;
}
void HighlighterControllerTestApi::HandleSelection(const gfx::Rect& rect) {
handle_selection_called_ = true;
selection_ = rect;
}
void HighlighterControllerTestApi::HandleEnabledStateChange(bool enabled) {
handle_enabled_state_changed_called_ = true;
enabled_ = enabled;
}
} // namespace ash