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/test/athena_test_base.h"
10#include "ui/aura/window.h"
11
12namespace athena {
13
14typedef test::AthenaTestBase ActivityManagerTest;
15
16TEST_F(ActivityManagerTest, Basic) {
17  ActivityManagerImpl* activity_manager =
18      static_cast<ActivityManagerImpl*>(ActivityManager::Get());
19  ActivityFactory* factory = ActivityFactory::Get();
20
21  Activity* activity1 =
22      factory->CreateWebActivity(NULL, base::string16(), GURL());
23  EXPECT_EQ(1, activity_manager->num_activities());
24
25  // Activity is not visible when created.
26  EXPECT_FALSE(activity1->GetWindow()->TargetVisibility());
27  Activity::Show(activity1);
28  EXPECT_TRUE(activity1->GetWindow()->TargetVisibility());
29
30  Activity* activity2 =
31      factory->CreateWebActivity(NULL, base::string16(), GURL());
32  EXPECT_EQ(2, activity_manager->num_activities());
33
34  Activity::Delete(activity1);
35  EXPECT_EQ(1, activity_manager->num_activities());
36
37  // Deleting the activity's window should delete the activity itself.
38  delete activity2->GetWindow();
39  EXPECT_EQ(0, activity_manager->num_activities());
40}
41
42TEST_F(ActivityManagerTest, GetActivityForWindow) {
43  ActivityManager* manager = ActivityManager::Get();
44  ActivityFactory* factory = ActivityFactory::Get();
45
46  Activity* activity1 =
47      factory->CreateWebActivity(NULL, base::string16(), GURL());
48  Activity* activity2 =
49      factory->CreateWebActivity(NULL, base::string16(), GURL());
50
51  EXPECT_EQ(activity1, manager->GetActivityForWindow(activity1->GetWindow()));
52  EXPECT_EQ(activity2, manager->GetActivityForWindow(activity2->GetWindow()));
53
54  EXPECT_EQ(NULL, manager->GetActivityForWindow(NULL));
55
56  scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
57  EXPECT_EQ(NULL, manager->GetActivityForWindow(window.get()));
58}
59
60}  // namespace athena
61