blob: 9c986568d49e330099e24fa0857f22ecc3fab348 [file] [log] [blame]
// Copyright 2019 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.
#ifndef COMPONENTS_MEDIA_MESSAGE_CENTER_MEDIA_CONTROLS_PROGRESS_VIEW_H_
#define COMPONENTS_MEDIA_MESSAGE_CENTER_MEDIA_CONTROLS_PROGRESS_VIEW_H_
#include "base/timer/timer.h"
#include "services/media_session/public/mojom/media_session.mojom.h"
#include "ui/views/view.h"
namespace views {
class ProgressBar;
class Label;
} // namespace views
namespace media_message_center {
class COMPONENT_EXPORT(MEDIA_MESSAGE_CENTER) MediaControlsProgressView
: public views::View {
public:
explicit MediaControlsProgressView(
base::RepeatingCallback<void(double)> seek_callback);
~MediaControlsProgressView() override;
void UpdateProgress(const media_session::MediaPosition& media_position);
void SetForegroundColor(SkColor color);
void SetBackgroundColor(SkColor color);
// views::View:
bool OnMousePressed(const ui::MouseEvent& event) override;
void OnGestureEvent(ui::GestureEvent* event) override;
const views::ProgressBar* progress_bar_for_testing() const;
const base::string16& progress_time_for_testing() const;
const base::string16& duration_for_testing() const;
private:
void SetBarProgress(double progress);
void SetProgressTime(const base::string16& time);
void SetDuration(const base::string16& duration);
void HandleSeeking(const gfx::Point& location);
views::ProgressBar* progress_bar_;
views::Label* progress_time_;
views::Label* duration_;
// Timer to continually update the progress.
base::RepeatingTimer update_progress_timer_;
const base::RepeatingCallback<void(double)> seek_callback_;
DISALLOW_COPY_AND_ASSIGN(MediaControlsProgressView);
};
} // namespace media_message_center
#endif // COMPONENTS_MEDIA_MESSAGE_CENTER_MEDIA_CONTROLS_PROGRESS_VIEW_H_