普通文本  |  61行  |  2.05 KB

/// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "athena/activity/activity_manager_impl.h"

#include "athena/activity/public/activity.h"
#include "athena/activity/public/activity_factory.h"
#include "athena/test/athena_test_base.h"
#include "ui/aura/window.h"

namespace athena {

typedef test::AthenaTestBase ActivityManagerTest;

TEST_F(ActivityManagerTest, Basic) {
  ActivityManagerImpl* activity_manager =
      static_cast<ActivityManagerImpl*>(ActivityManager::Get());
  ActivityFactory* factory = ActivityFactory::Get();

  Activity* activity1 =
      factory->CreateWebActivity(NULL, base::string16(), GURL());
  EXPECT_EQ(1, activity_manager->num_activities());

  // Activity is not visible when created.
  EXPECT_FALSE(activity1->GetWindow()->TargetVisibility());
  Activity::Show(activity1);
  EXPECT_TRUE(activity1->GetWindow()->TargetVisibility());

  Activity* activity2 =
      factory->CreateWebActivity(NULL, base::string16(), GURL());
  EXPECT_EQ(2, activity_manager->num_activities());

  Activity::Delete(activity1);
  EXPECT_EQ(1, activity_manager->num_activities());

  // Deleting the activity's window should delete the activity itself.
  delete activity2->GetWindow();
  EXPECT_EQ(0, activity_manager->num_activities());
}

TEST_F(ActivityManagerTest, GetActivityForWindow) {
  ActivityManager* manager = ActivityManager::Get();
  ActivityFactory* factory = ActivityFactory::Get();

  Activity* activity1 =
      factory->CreateWebActivity(NULL, base::string16(), GURL());
  Activity* activity2 =
      factory->CreateWebActivity(NULL, base::string16(), GURL());

  EXPECT_EQ(activity1, manager->GetActivityForWindow(activity1->GetWindow()));
  EXPECT_EQ(activity2, manager->GetActivityForWindow(activity2->GetWindow()));

  EXPECT_EQ(NULL, manager->GetActivityForWindow(NULL));

  scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
  EXPECT_EQ(NULL, manager->GetActivityForWindow(window.get()));
}

}  // namespace athena