Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / athena / activity / activity_manager_unittest.cc
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