Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / extension_icon_source_apitest.cc
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 "base/logging.h"
6 #include "chrome/browser/extensions/extension_apitest.h"
7 #include "chrome/browser/extensions/extension_service.h"
8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/tabs/tab_strip_model.h"
11 #include "chrome/test/base/ui_test_utils.h"
12 #include "content/public/browser/web_contents.h"
13 #include "content/public/test/browser_test_utils.h"
14 #include "extensions/common/switches.h"
15 #include "net/dns/mock_host_resolver.h"
16 #include "url/gurl.h"
17
18 class ExtensionIconSourceTest : public ExtensionApiTest {
19  protected:
20   void SetUpCommandLine(CommandLine* command_line) override {
21     ExtensionApiTest::SetUpCommandLine(command_line);
22     command_line->AppendSwitch(
23         extensions::switches::kAllowLegacyExtensionManifests);
24   }
25 };
26
27 // Times out on Mac and Win. http://crbug.com/238705
28 #if defined(OS_WIN) || defined(OS_MACOSX)
29 #define MAYBE_IconsLoaded DISABLED_IconsLoaded
30 #else
31 #define MAYBE_IconsLoaded IconsLoaded
32 #endif
33
34 IN_PROC_BROWSER_TEST_F(ExtensionIconSourceTest, MAYBE_IconsLoaded) {
35   base::FilePath basedir = test_data_dir_.AppendASCII("icons");
36   ASSERT_TRUE(LoadExtension(basedir.AppendASCII("extension_with_permission")));
37   ASSERT_TRUE(LoadExtension(basedir.AppendASCII("extension_no_permission")));
38   std::string result;
39
40   // Test that the icons are loaded and that the chrome://extension-icon
41   // parameters work correctly.
42   ui_test_utils::NavigateToURL(
43       browser(),
44       GURL("chrome-extension://gbmgkahjioeacddebbnengilkgbkhodg/index.html"));
45   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
46       browser()->tab_strip_model()->GetActiveWebContents(),
47       "window.domAutomationController.send(document.title)",
48       &result));
49   EXPECT_EQ(result, "Loaded");
50
51   // Verify that the an extension can't load chrome://extension-icon icons
52   // without the management permission.
53   ui_test_utils::NavigateToURL(
54       browser(),
55       GURL("chrome-extension://apocjbpjpkghdepdngjlknfpmabcmlao/index.html"));
56   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
57       browser()->tab_strip_model()->GetActiveWebContents(),
58       "window.domAutomationController.send(document.title)",
59       &result));
60   EXPECT_EQ(result, "Not Loaded");
61 }
62
63 IN_PROC_BROWSER_TEST_F(ExtensionIconSourceTest, InvalidURL) {
64   std::string result;
65
66   // Test that navigation to an invalid url works.
67   ui_test_utils::NavigateToURL(
68       browser(),
69       GURL("chrome://extension-icon/invalid"));
70
71   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
72       browser()->tab_strip_model()->GetActiveWebContents(),
73       "window.domAutomationController.send(document.title)",
74       &result));
75   EXPECT_EQ(result, "invalid (96\xC3\x97""96)");
76 }
77
78 // Times out on Mac and Win. http://crbug.com/238705
79 #if defined(OS_WIN) || defined(OS_MACOSX)
80 #define MAYBE_IconsLoadedIncognito DISABLED_IconsLoadedIncognito
81 #else
82 #define MAYBE_IconsLoadedIncognito IconsLoadedIncognito
83 #endif
84
85 IN_PROC_BROWSER_TEST_F(ExtensionIconSourceTest, MAYBE_IconsLoadedIncognito) {
86   base::FilePath basedir = test_data_dir_.AppendASCII("icons");
87   ASSERT_TRUE(LoadExtensionIncognito(
88       basedir.AppendASCII("extension_with_permission")));
89   ASSERT_TRUE(LoadExtensionIncognito(
90       basedir.AppendASCII("extension_no_permission")));
91   std::string result;
92
93   // Test that the icons are loaded and that the chrome://extension-icon
94   // parameters work correctly.
95   Browser* otr_browser = ui_test_utils::OpenURLOffTheRecord(
96       browser()->profile(),
97       GURL("chrome-extension://gbmgkahjioeacddebbnengilkgbkhodg/index.html"));
98   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
99       otr_browser->tab_strip_model()->GetActiveWebContents(),
100       "window.domAutomationController.send(document.title)",
101       &result));
102   EXPECT_EQ(result, "Loaded");
103
104   // Verify that the an extension can't load chrome://extension-icon icons
105   // without the management permission.
106   ui_test_utils::OpenURLOffTheRecord(
107       browser()->profile(),
108       GURL("chrome-extension://apocjbpjpkghdepdngjlknfpmabcmlao/index.html"));
109   ASSERT_TRUE(content::ExecuteScriptAndExtractString(
110       otr_browser->tab_strip_model()->GetActiveWebContents(),
111       "window.domAutomationController.send(document.title)",
112       &result));
113   EXPECT_EQ(result, "Not Loaded");
114 }