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 "base/files/file_path.h"
6#include "base/path_service.h"
7#include "chrome/browser/apps/app_browsertest_util.h"
8#include "chrome/browser/extensions/component_loader.h"
9#include "chrome/browser/extensions/extension_service.h"
10#include "extensions/browser/extension_registry.h"
11#include "extensions/test/extension_test_message_listener.h"
12#include "grit/browser_resources.h"
13
14using extensions::Extension;
15using extensions::ExtensionRegistry;
16
17namespace {
18const char* kWallpaperManagerExtensionID = "obklkkbkpaoaejdabbfldmcfplpdgolj";
19}  // namespace
20
21class WallpaperManagerBrowserTest : public extensions::PlatformAppBrowserTest {
22 public:
23  WallpaperManagerBrowserTest();
24  virtual ~WallpaperManagerBrowserTest();
25
26 protected:
27  void VerifyWallpaperManagerLoaded();
28
29 private:
30  void LoadAndLaunchWallpaperManager();
31};
32
33WallpaperManagerBrowserTest::WallpaperManagerBrowserTest() {
34}
35
36WallpaperManagerBrowserTest::~WallpaperManagerBrowserTest() {
37}
38
39void WallpaperManagerBrowserTest::LoadAndLaunchWallpaperManager() {
40  extension_service()->component_loader()->Add(
41      IDR_WALLPAPERMANAGER_MANIFEST,
42      base::FilePath(FILE_PATH_LITERAL("chromeos/wallpaper_manager")));
43  const Extension* wallpaper_app =
44      ExtensionRegistry::Get(profile())->GetExtensionById(
45          kWallpaperManagerExtensionID, ExtensionRegistry::EVERYTHING);
46  LaunchPlatformApp(wallpaper_app);
47}
48
49void WallpaperManagerBrowserTest::VerifyWallpaperManagerLoaded() {
50  ExtensionTestMessageListener window_created_listener(
51      "wallpaper-window-created", false);
52  ExtensionTestMessageListener launched_listener("launched", false);
53  LoadAndLaunchWallpaperManager();
54  EXPECT_TRUE(window_created_listener.WaitUntilSatisfied())
55      << "Wallpaper picker window was not created.";
56  EXPECT_TRUE(launched_listener.WaitUntilSatisfied())
57      << "Wallpaper picker was not loaded.";
58}
59
60// Test for crbug.com/410550.
61IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, DevLaunchApp) {
62  VerifyWallpaperManagerLoaded();
63}
64
65// Test for crbug.com/410550. Wallpaper picker should be able to create
66// alpha enabled window successfully.
67IN_PROC_BROWSER_TEST_F(WallpaperManagerBrowserTest, StableLaunchApp) {
68  extensions::ScopedCurrentChannel channel(chrome::VersionInfo::CHANNEL_STABLE);
69  VerifyWallpaperManagerLoaded();
70}
71