#include "athena/activity/public/activity.h"
#include "athena/activity/public/activity_factory.h"
-#include "athena/test/athena_test_base.h"
+#include "athena/activity/public/activity_view_model.h"
+#include "athena/test/base/athena_test_base.h"
+#include "athena/test/base/test_windows.h"
#include "ui/aura/window.h"
+#include "ui/gfx/image/image_skia.h"
+#include "ui/views/widget/widget.h"
+#include "ui/wm/core/window_util.h"
namespace athena {
typedef test::AthenaTestBase ActivityManagerTest;
+class WidgetActivity : public Activity,
+ public ActivityViewModel {
+ public:
+ WidgetActivity() : initialized_(false) {
+ widget_.reset(new views::Widget());
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
+ params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ widget_->Init(params);
+ }
+
+ bool initialized() const { return initialized_; }
+
+ private:
+ ~WidgetActivity() override {}
+
+ // athena::Activity:
+ athena::ActivityViewModel* GetActivityViewModel() override { return this; }
+ void SetCurrentState(Activity::ActivityState state) override {}
+ ActivityState GetCurrentState() override { return ACTIVITY_VISIBLE; }
+ bool IsVisible() override { return true; }
+ ActivityMediaState GetMediaState() override {
+ return ACTIVITY_MEDIA_STATE_NONE;
+ }
+ aura::Window* GetWindow() override { return widget_->GetNativeView(); }
+ content::WebContents* GetWebContents() override { return nullptr; }
+
+ // athena::ActivityViewModel:
+ void Init() override {
+ initialized_ = true;
+ }
+
+ SkColor GetRepresentativeColor() const override { return SK_ColorBLACK; }
+ base::string16 GetTitle() const override { return base::string16(); }
+ gfx::ImageSkia GetIcon() const override { return gfx::ImageSkia(); }
+ void SetActivityView(ActivityView* activity_view) override {}
+ bool UsesFrame() const override { return false; }
+ views::View* GetContentsView() override { return nullptr; }
+ gfx::ImageSkia GetOverviewModeImage() override { return gfx::ImageSkia(); }
+ void PrepareContentsForOverview() override {}
+ void ResetContentsView() override {}
+
+ scoped_ptr<views::Widget> widget_;
+ bool initialized_;
+
+ DISALLOW_COPY_AND_ASSIGN(WidgetActivity);
+};
+
TEST_F(ActivityManagerTest, Basic) {
ActivityManagerImpl* activity_manager =
static_cast<ActivityManagerImpl*>(ActivityManager::Get());
ActivityFactory* factory = ActivityFactory::Get();
Activity* activity1 =
- factory->CreateWebActivity(NULL, base::string16(), GURL());
+ factory->CreateWebActivity(nullptr, base::string16(), GURL());
EXPECT_EQ(1, activity_manager->num_activities());
// Activity is not visible when created.
EXPECT_TRUE(activity1->GetWindow()->TargetVisibility());
Activity* activity2 =
- factory->CreateWebActivity(NULL, base::string16(), GURL());
+ factory->CreateWebActivity(nullptr, base::string16(), GURL());
EXPECT_EQ(2, activity_manager->num_activities());
Activity::Delete(activity1);
ActivityFactory* factory = ActivityFactory::Get();
Activity* activity1 =
- factory->CreateWebActivity(NULL, base::string16(), GURL());
+ factory->CreateWebActivity(nullptr, base::string16(), GURL());
Activity* activity2 =
- factory->CreateWebActivity(NULL, base::string16(), GURL());
+ factory->CreateWebActivity(nullptr, base::string16(), GURL());
EXPECT_EQ(activity1, manager->GetActivityForWindow(activity1->GetWindow()));
EXPECT_EQ(activity2, manager->GetActivityForWindow(activity2->GetWindow()));
- EXPECT_EQ(NULL, manager->GetActivityForWindow(NULL));
+ EXPECT_EQ(nullptr, manager->GetActivityForWindow(nullptr));
+
+ scoped_ptr<aura::Window> window = test::CreateNormalWindow(nullptr, nullptr);
+ EXPECT_EQ(nullptr, manager->GetActivityForWindow(window.get()));
+}
+
+TEST_F(ActivityManagerTest, ActivationBringsActivityToTop) {
+ ActivityManager* manager = ActivityManager::Get();
+ ActivityFactory* factory = ActivityFactory::Get();
- scoped_ptr<aura::Window> window = CreateTestWindow(NULL, gfx::Rect());
- EXPECT_EQ(NULL, manager->GetActivityForWindow(window.get()));
+ Activity* activity1 =
+ factory->CreateWebActivity(nullptr, base::string16(), GURL());
+ Activity* activity2 =
+ factory->CreateWebActivity(nullptr, base::string16(), GURL());
+ activity1->GetWindow()->Show();
+ activity2->GetWindow()->Show();
+
+ ASSERT_EQ(2u, manager->GetActivityList().size());
+ EXPECT_EQ(activity2, manager->GetActivityList()[0]);
+ EXPECT_EQ(activity1, manager->GetActivityList()[1]);
+
+ wm::ActivateWindow(activity1->GetWindow());
+ ASSERT_EQ(2u, manager->GetActivityList().size());
+ EXPECT_EQ(activity1, manager->GetActivityList()[0]);
+ EXPECT_EQ(activity2, manager->GetActivityList()[1]);
+}
+
+TEST_F(ActivityManagerTest, WidgetActivityModelIsInitialized) {
+ ActivityManager* manager = ActivityManager::Get();
+ WidgetActivity* activity = new WidgetActivity();
+ manager->AddActivity(activity);
+ EXPECT_TRUE(activity->initialized());
+ Activity::Delete(activity);
}
} // namespace athena