OLD | NEW |
| (Empty) |
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. | |
4 | |
5 #include "athena/activity/activity_manager_impl.h" | |
6 | |
7 #include "athena/activity/public/activity.h" | |
8 #include "athena/activity/public/activity_factory.h" | |
9 #include "athena/activity/public/activity_view_model.h" | |
10 #include "athena/test/base/athena_test_base.h" | |
11 #include "athena/test/base/test_windows.h" | |
12 #include "ui/aura/window.h" | |
13 #include "ui/gfx/image/image_skia.h" | |
14 #include "ui/views/widget/widget.h" | |
15 #include "ui/wm/core/window_util.h" | |
16 | |
17 namespace athena { | |
18 | |
19 typedef test::AthenaTestBase ActivityManagerTest; | |
20 | |
21 class WidgetActivity : public Activity, | |
22 public ActivityViewModel { | |
23 public: | |
24 WidgetActivity() : initialized_(false) { | |
25 widget_.reset(new views::Widget()); | |
26 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | |
27 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | |
28 widget_->Init(params); | |
29 } | |
30 | |
31 bool initialized() const { return initialized_; } | |
32 | |
33 private: | |
34 ~WidgetActivity() override {} | |
35 | |
36 // athena::Activity: | |
37 athena::ActivityViewModel* GetActivityViewModel() override { return this; } | |
38 void SetCurrentState(Activity::ActivityState state) override {} | |
39 ActivityState GetCurrentState() override { return ACTIVITY_VISIBLE; } | |
40 bool IsVisible() override { return true; } | |
41 ActivityMediaState GetMediaState() override { | |
42 return ACTIVITY_MEDIA_STATE_NONE; | |
43 } | |
44 aura::Window* GetWindow() override { return widget_->GetNativeView(); } | |
45 content::WebContents* GetWebContents() override { return nullptr; } | |
46 | |
47 // athena::ActivityViewModel: | |
48 void Init() override { | |
49 initialized_ = true; | |
50 } | |
51 | |
52 SkColor GetRepresentativeColor() const override { return SK_ColorBLACK; } | |
53 base::string16 GetTitle() const override { return base::string16(); } | |
54 gfx::ImageSkia GetIcon() const override { return gfx::ImageSkia(); } | |
55 void SetActivityView(ActivityView* activity_view) override {} | |
56 bool UsesFrame() const override { return false; } | |
57 views::View* GetContentsView() override { return nullptr; } | |
58 gfx::ImageSkia GetOverviewModeImage() override { return gfx::ImageSkia(); } | |
59 void PrepareContentsForOverview() override {} | |
60 void ResetContentsView() override {} | |
61 | |
62 scoped_ptr<views::Widget> widget_; | |
63 bool initialized_; | |
64 | |
65 DISALLOW_COPY_AND_ASSIGN(WidgetActivity); | |
66 }; | |
67 | |
68 TEST_F(ActivityManagerTest, Basic) { | |
69 ActivityManagerImpl* activity_manager = | |
70 static_cast<ActivityManagerImpl*>(ActivityManager::Get()); | |
71 ActivityFactory* factory = ActivityFactory::Get(); | |
72 | |
73 Activity* activity1 = | |
74 factory->CreateWebActivity(nullptr, base::string16(), GURL()); | |
75 EXPECT_EQ(1, activity_manager->num_activities()); | |
76 | |
77 // Activity is not visible when created. | |
78 EXPECT_FALSE(activity1->GetWindow()->TargetVisibility()); | |
79 Activity::Show(activity1); | |
80 EXPECT_TRUE(activity1->GetWindow()->TargetVisibility()); | |
81 | |
82 Activity* activity2 = | |
83 factory->CreateWebActivity(nullptr, base::string16(), GURL()); | |
84 EXPECT_EQ(2, activity_manager->num_activities()); | |
85 | |
86 Activity::Delete(activity1); | |
87 EXPECT_EQ(1, activity_manager->num_activities()); | |
88 | |
89 // Deleting the activity's window should delete the activity itself. | |
90 delete activity2->GetWindow(); | |
91 EXPECT_EQ(0, activity_manager->num_activities()); | |
92 } | |
93 | |
94 TEST_F(ActivityManagerTest, GetActivityForWindow) { | |
95 ActivityManager* manager = ActivityManager::Get(); | |
96 ActivityFactory* factory = ActivityFactory::Get(); | |
97 | |
98 Activity* activity1 = | |
99 factory->CreateWebActivity(nullptr, base::string16(), GURL()); | |
100 Activity* activity2 = | |
101 factory->CreateWebActivity(nullptr, base::string16(), GURL()); | |
102 | |
103 EXPECT_EQ(activity1, manager->GetActivityForWindow(activity1->GetWindow())); | |
104 EXPECT_EQ(activity2, manager->GetActivityForWindow(activity2->GetWindow())); | |
105 | |
106 EXPECT_EQ(nullptr, manager->GetActivityForWindow(nullptr)); | |
107 | |
108 scoped_ptr<aura::Window> window = test::CreateNormalWindow(nullptr, nullptr); | |
109 EXPECT_EQ(nullptr, manager->GetActivityForWindow(window.get())); | |
110 } | |
111 | |
112 TEST_F(ActivityManagerTest, ActivationBringsActivityToTop) { | |
113 ActivityManager* manager = ActivityManager::Get(); | |
114 ActivityFactory* factory = ActivityFactory::Get(); | |
115 | |
116 Activity* activity1 = | |
117 factory->CreateWebActivity(nullptr, base::string16(), GURL()); | |
118 Activity* activity2 = | |
119 factory->CreateWebActivity(nullptr, base::string16(), GURL()); | |
120 activity1->GetWindow()->Show(); | |
121 activity2->GetWindow()->Show(); | |
122 | |
123 ASSERT_EQ(2u, manager->GetActivityList().size()); | |
124 EXPECT_EQ(activity2, manager->GetActivityList()[0]); | |
125 EXPECT_EQ(activity1, manager->GetActivityList()[1]); | |
126 | |
127 wm::ActivateWindow(activity1->GetWindow()); | |
128 ASSERT_EQ(2u, manager->GetActivityList().size()); | |
129 EXPECT_EQ(activity1, manager->GetActivityList()[0]); | |
130 EXPECT_EQ(activity2, manager->GetActivityList()[1]); | |
131 } | |
132 | |
133 TEST_F(ActivityManagerTest, WidgetActivityModelIsInitialized) { | |
134 ActivityManager* manager = ActivityManager::Get(); | |
135 WidgetActivity* activity = new WidgetActivity(); | |
136 manager->AddActivity(activity); | |
137 EXPECT_TRUE(activity->initialized()); | |
138 Activity::Delete(activity); | |
139 } | |
140 | |
141 } // namespace athena | |
OLD | NEW |