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.
5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
6 #include "chrome/common/extensions/manifest_url_handler.h"
7 #include "extensions/common/manifest_constants.h"
8 #include "testing/gtest/include/gtest/gtest.h"
10 namespace errors
= extensions::manifest_errors
;
12 class OptionsPageManifestTest
: public ExtensionManifestTest
{
15 TEST_F(OptionsPageManifestTest
, OptionsPageInApps
) {
16 scoped_refptr
<extensions::Extension
> extension
;
18 // Allow options page with absolute URL in hosted apps.
19 extension
= LoadAndExpectSuccess("hosted_app_absolute_options.json");
21 extensions::ManifestURL::GetOptionsPage(extension
.get())
25 extensions::ManifestURL::GetOptionsPage(extension
.get()).host().c_str());
26 EXPECT_STREQ("options.html",
27 extensions::ManifestURL::GetOptionsPage(extension
.get())
28 .ExtractFileName().c_str());
30 extension
= LoadAndExpectSuccess("platform_app_with_options_page.json");
31 EXPECT_TRUE(extensions::ManifestURL::GetOptionsPage(extension
.get())
34 Testcase testcases
[] = {
35 // Forbid options page with relative URL in hosted apps.
36 Testcase("hosted_app_relative_options.json",
37 errors::kInvalidOptionsPageInHostedApp
),
39 // Forbid options page with non-(http|https) scheme in hosted app.
40 Testcase("hosted_app_file_options.json",
41 errors::kInvalidOptionsPageInHostedApp
),
43 // Forbid absolute URL for options page in packaged apps.
44 Testcase("packaged_app_absolute_options.json",
45 errors::kInvalidOptionsPageExpectUrlInPackage
)
47 RunTestcases(testcases
, arraysize(testcases
),