1// Copyright (c) 2012 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 "chrome/browser/extensions/extension_browsertest.h"
6#include "chrome/browser/ui/browser.h"
7#include "chrome/browser/ui/tabs/tab_strip_model.h"
8#include "chrome/test/base/ui_test_utils.h"
9#include "content/public/test/browser_test_utils.h"
10
11// Tests that we can load extension pages into the tab area and they can call
12// extension APIs.
13IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, WebContents) {
14  ASSERT_TRUE(LoadExtension(
15      test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
16                    .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
17                    .AppendASCII("1.0.0.0")));
18
19  ui_test_utils::NavigateToURL(
20      browser(),
21      GURL("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html"));
22
23  bool result = false;
24  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
25      browser()->tab_strip_model()->GetActiveWebContents(),
26      "testTabsAPI()",
27      &result));
28  EXPECT_TRUE(result);
29
30  // There was a bug where we would crash if we navigated to a page in the same
31  // extension because no new render view was getting created, so we would not
32  // do some setup.
33  ui_test_utils::NavigateToURL(
34      browser(),
35      GURL("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html"));
36  result = false;
37  ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
38      browser()->tab_strip_model()->GetActiveWebContents(),
39      "testTabsAPI()",
40      &result));
41  EXPECT_TRUE(result);
42}
43