1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "athena/content/app_activity_proxy.h"
7 #include "athena/content/app_activity.h"
8 #include "athena/content/app_activity_registry.h"
9 #include "athena/wm/public/window_list_provider.h"
10 #include "athena/wm/public/window_manager.h"
11 #include "ui/aura/window.h"
12 #include "ui/views/view.h"
13 #include "ui/views/widget/widget.h"
17 AppActivityProxy::AppActivityProxy(AppActivity
* replaced_activity
,
18 AppActivityRegistry
* creator
) :
19 app_activity_registry_(creator
),
20 title_(replaced_activity
->GetActivityViewModel()->GetTitle()),
21 color_(replaced_activity
->GetActivityViewModel()->GetRepresentativeColor()),
22 replaced_activity_(replaced_activity
),
23 view_(new views::View()),
24 restart_called_(false) {
27 AppActivityProxy::~AppActivityProxy() {
28 app_activity_registry_
->ProxyDestroyed(this);
31 ActivityViewModel
* AppActivityProxy::GetActivityViewModel() {
35 void AppActivityProxy::SetCurrentState(ActivityState state
) {
36 // We only restart the application when we are switching to visible, and only
38 if (state
!= ACTIVITY_VISIBLE
|| restart_called_
)
40 restart_called_
= true;
41 app_activity_registry_
->RestartApplication(this);
42 // Note: This object is now destroyed.
45 Activity::ActivityState
AppActivityProxy::GetCurrentState() {
46 return ACTIVITY_UNLOADED
;
49 bool AppActivityProxy::IsVisible() {
53 Activity::ActivityMediaState
AppActivityProxy::GetMediaState() {
54 // This proxy has never any media playing.
55 return ACTIVITY_MEDIA_STATE_NONE
;
58 aura::Window
* AppActivityProxy::GetWindow() {
59 return view_
->GetWidget()->GetNativeWindow();
62 content::WebContents
* AppActivityProxy::GetWebContents() {
66 void AppActivityProxy::Init() {
67 DCHECK(replaced_activity_
);
68 // Get the content proxy to present the content.
69 content_proxy_
= replaced_activity_
->GetContentProxy();
70 WindowListProvider
* window_list_provider
=
71 WindowManager::Get()->GetWindowListProvider();
72 window_list_provider
->StackWindowBehindTo(GetWindow(),
73 replaced_activity_
->GetWindow());
74 // After the Init() function returns, the passed |replaced_activity_| might
75 // get destroyed. Since we do not need it anymore we reset it.
76 replaced_activity_
= NULL
;
79 SkColor
AppActivityProxy::GetRepresentativeColor() const {
83 base::string16
AppActivityProxy::GetTitle() const {
87 gfx::ImageSkia
AppActivityProxy::GetIcon() const {
88 return gfx::ImageSkia();
91 bool AppActivityProxy::UsesFrame() const {
95 views::View
* AppActivityProxy::GetContentsView() {
99 views::Widget
* AppActivityProxy::CreateWidget() {
103 gfx::ImageSkia
AppActivityProxy::GetOverviewModeImage() {
104 return content_proxy_
->GetContentImage();
107 void AppActivityProxy::PrepareContentsForOverview() {
110 void AppActivityProxy::ResetContentsView() {
113 } // namespace athena