// 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 "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
#include "extensions/browser/app_window/app_window.h"
#include "extensions/browser/app_window/app_window_registry.h"
#include "extensions/browser/notification_types.h"
#include "extensions/shell/test/shell_apitest.h"

#if defined(USE_AURA)
#include "ui/aura/window.h"  // nogncheck
#endif

namespace extensions {

// Test that we can load an extension.
IN_PROC_BROWSER_TEST_F(ShellApiTest, LoadExtension) {
  ASSERT_TRUE(RunExtensionTest("extension")) << message_;
}

// Test that we can open an app window and wait for it to load.
IN_PROC_BROWSER_TEST_F(ShellApiTest, LoadApp) {
  ASSERT_TRUE(RunAppTest("platform_app")) << message_;

  // A window was created.
  AppWindow* app_window =
      AppWindowRegistry::Get(browser_context())->app_windows().front();
  ASSERT_TRUE(app_window);

  // TODO(yoz): Test for focus on Cocoa.
  // app_window->GetBaseWindow()->IsActive() is possible, although on Mac,
  // focus changes are asynchronous, so interactive_ui_tests are required.
#if defined(USE_AURA)
  // The web contents have focus.
  EXPECT_TRUE(app_window->web_contents()->GetContentNativeView()->HasFocus());
#endif
}

}  // namespace extensions
