Skip to content

Commit

Permalink
[Chromecast] Use only one LayoutProvider instance.
Browse files Browse the repository at this point in the history
With one instance in MediaOverlayImpl and one in MediaControlUi,
the extra instance's destruction would cause LayoutProvder::Get() to
return nullptr.

Bug: internal b/172316742
Test: repro bug
Change-Id: I05fcd1ff6de895e394cc11c65d680764bfefa558
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2551300
Commit-Queue: Thoren Paulson <thoren@chromium.org>
Commit-Queue: Sean Topping <seantopping@chromium.org>
Auto-Submit: Thoren Paulson <thoren@chromium.org>
Reviewed-by: Sean Topping <seantopping@chromium.org>
Cr-Commit-Position: refs/heads/master@{#829429}
  • Loading branch information
Thoren Paulson authored and Commit Bot committed Nov 19, 2020
1 parent 4d9adab commit d4f80c6
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 7 deletions.
5 changes: 4 additions & 1 deletion chromecast/ui/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ cast_source_set("aura_components") {
if (use_aura) {
sources += [ "aura_components.cc" ]

deps += [ ":media_overlay" ]
deps += [
":media_overlay",
"//ui/views",
]
} else {
sources += [ "aura_components_dummy.cc" ]
}
Expand Down
2 changes: 2 additions & 0 deletions chromecast/ui/aura_components.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <memory>

#include "chromecast/ui/media_overlay.h"
#include "ui/views/layout/layout_provider.h"

namespace chromecast {

Expand All @@ -28,6 +29,7 @@ class AuraComponents {
MediaOverlay* media_overlay() const { return media_overlay_.get(); }

private:
views::LayoutProvider layout_provider_;
std::unique_ptr<MediaOverlay> media_overlay_;
};

Expand Down
3 changes: 0 additions & 3 deletions chromecast/ui/media_control_ui.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/progress_bar.h"
#include "ui/views/layout/layout_provider.h"
#include "ui/views/widget/widget.h"

namespace chromecast {
Expand Down Expand Up @@ -95,8 +94,6 @@ class MediaControlUi : public mojom::MediaControlUi {

base::RepeatingTimer media_time_update_timer_;

views::LayoutProvider layout_provider_;

SEQUENCE_CHECKER(sequence_checker_);
base::WeakPtrFactory<MediaControlUi> weak_factory_;

Expand Down
1 change: 0 additions & 1 deletion chromecast/ui/media_overlay_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ constexpr base::TimeDelta kUiHideDelay = base::TimeDelta::FromSeconds(3);

MediaOverlayImpl::MediaOverlayImpl(CastWindowManager* window_manager)
: window_manager_(window_manager),
layout_provider_(std::make_unique<views::LayoutProvider>()),
ui_task_runner_(base::ThreadTaskRunnerHandle::Get()),
controller_(nullptr),
volume_icon_image_(ui::ResourceBundle::GetSharedInstance().GetImageNamed(
Expand Down
2 changes: 0 additions & 2 deletions chromecast/ui/media_overlay_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@

namespace views {
class Label;
class LayoutProvider;
class ProgressBar;
class View;
class Widget;
Expand Down Expand Up @@ -68,7 +67,6 @@ class MediaOverlayImpl : public MediaOverlay,
std::unique_ptr<views::View> content_view);

CastWindowManager* const window_manager_;
const std::unique_ptr<views::LayoutProvider> layout_provider_;
const scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
base::flat_set<media::MediaPipelineImpl*> passthrough_pipelines_;
Controller* controller_;
Expand Down

0 comments on commit d4f80c6

Please sign in to comment.