Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1118)

Unified Diff: chrome/common/extensions/background_info.cc

Issue 65123002: Move chrome/common/extensions/background_info.h to src/extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase2 background_info Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/extensions/background_info.h ('k') | chrome/common/extensions/chrome_manifest_handlers.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/extensions/background_info.cc
diff --git a/chrome/common/extensions/background_info.cc b/chrome/common/extensions/background_info.cc
deleted file mode 100644
index 54be0b8b49c64dfb5df335a195828b12f47a4677..0000000000000000000000000000000000000000
--- a/chrome/common/extensions/background_info.cc
+++ /dev/null
@@ -1,319 +0,0 @@
-// Copyright (c) 2013 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 "chrome/common/extensions/background_info.h"
-
-#include "base/command_line.h"
-#include "base/file_util.h"
-#include "base/lazy_instance.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/extensions/extension_file_util.h"
-#include "chrome/common/extensions/permissions/permissions_data.h"
-#include "extensions/common/constants.h"
-#include "extensions/common/error_utils.h"
-#include "extensions/common/manifest_constants.h"
-#include "extensions/common/permissions/api_permission_set.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using base::DictionaryValue;
-
-namespace extensions {
-
-namespace keys = manifest_keys;
-namespace values = manifest_values;
-namespace errors = manifest_errors;
-
-namespace {
-
-const char kBackground[] = "background";
-
-static base::LazyInstance<BackgroundInfo> g_empty_background_info =
- LAZY_INSTANCE_INITIALIZER;
-
-const BackgroundInfo& GetBackgroundInfo(const Extension* extension) {
- BackgroundInfo* info = static_cast<BackgroundInfo*>(
- extension->GetManifestData(kBackground));
- if (!info)
- return g_empty_background_info.Get();
- return *info;
-}
-
-} // namespace
-
-BackgroundInfo::BackgroundInfo()
- : is_persistent_(true),
- allow_js_access_(true) {
-}
-
-BackgroundInfo::~BackgroundInfo() {
-}
-
-// static
-GURL BackgroundInfo::GetBackgroundURL(const Extension* extension) {
- const BackgroundInfo& info = GetBackgroundInfo(extension);
- if (info.background_scripts_.empty())
- return info.background_url_;
- return extension->GetResourceURL(kGeneratedBackgroundPageFilename);
-}
-
-// static
-bool BackgroundInfo::HasGeneratedBackgroundPage(const Extension* extension) {
- const BackgroundInfo& info = GetBackgroundInfo(extension);
- return !info.background_scripts_.empty();
-}
-
-// static
-const std::vector<std::string>& BackgroundInfo::GetBackgroundScripts(
- const Extension* extension) {
- return GetBackgroundInfo(extension).background_scripts_;
-}
-
-// static
-bool BackgroundInfo::HasBackgroundPage(const Extension* extension) {
- return GetBackgroundInfo(extension).has_background_page();
-}
-
-// static
-bool BackgroundInfo::AllowJSAccess(const Extension* extension) {
- return GetBackgroundInfo(extension).allow_js_access_;
-}
-
-// static
-bool BackgroundInfo::HasPersistentBackgroundPage(const Extension* extension) {
- return GetBackgroundInfo(extension).has_persistent_background_page();
-}
-
-// static
-bool BackgroundInfo::HasLazyBackgroundPage(const Extension* extension) {
- return GetBackgroundInfo(extension).has_lazy_background_page();
-}
-
-bool BackgroundInfo::Parse(const Extension* extension, string16* error) {
- const std::string& bg_scripts_key = extension->is_platform_app() ?
- keys::kPlatformAppBackgroundScripts : keys::kBackgroundScripts;
- if (!LoadBackgroundScripts(extension, bg_scripts_key, error) ||
- !LoadBackgroundPage(extension, error) ||
- !LoadBackgroundPersistent(extension, error) ||
- !LoadAllowJSAccess(extension, error)) {
- return false;
- }
- return true;
-}
-
-bool BackgroundInfo::LoadBackgroundScripts(const Extension* extension,
- const std::string& key,
- string16* error) {
- const base::Value* background_scripts_value = NULL;
- if (!extension->manifest()->Get(key, &background_scripts_value))
- return true;
-
- CHECK(background_scripts_value);
- if (background_scripts_value->GetType() != base::Value::TYPE_LIST) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundScripts);
- return false;
- }
-
- const base::ListValue* background_scripts = NULL;
- background_scripts_value->GetAsList(&background_scripts);
- for (size_t i = 0; i < background_scripts->GetSize(); ++i) {
- std::string script;
- if (!background_scripts->GetString(i, &script)) {
- *error = ErrorUtils::FormatErrorMessageUTF16(
- errors::kInvalidBackgroundScript, base::IntToString(i));
- return false;
- }
- background_scripts_.push_back(script);
- }
-
- return true;
-}
-
-bool BackgroundInfo::LoadBackgroundPage(const Extension* extension,
- const std::string& key,
- string16* error) {
- const base::Value* background_page_value = NULL;
- if (!extension->manifest()->Get(key, &background_page_value))
- return true;
-
- if (!background_scripts_.empty()) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundCombination);
- return false;
- }
-
- std::string background_str;
- if (!background_page_value->GetAsString(&background_str)) {
- *error = ASCIIToUTF16(errors::kInvalidBackground);
- return false;
- }
-
- if (extension->is_hosted_app()) {
- background_url_ = GURL(background_str);
-
- if (!PermissionsData::GetInitialAPIPermissions(extension)->count(
- APIPermission::kBackground)) {
- *error = ASCIIToUTF16(errors::kBackgroundPermissionNeeded);
- return false;
- }
- // Hosted apps require an absolute URL.
- if (!background_url_.is_valid()) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundInHostedApp);
- return false;
- }
-
- if (!(background_url_.SchemeIs("https") ||
- (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kAllowHTTPBackgroundPage) &&
- background_url_.SchemeIs("http")))) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundInHostedApp);
- return false;
- }
- } else {
- background_url_ = extension->GetResourceURL(background_str);
- }
-
- return true;
-}
-
-bool BackgroundInfo::LoadBackgroundPage(const Extension* extension,
- string16* error) {
- if (extension->is_platform_app()) {
- return LoadBackgroundPage(
- extension, keys::kPlatformAppBackgroundPage, error);
- }
-
- if (!LoadBackgroundPage(extension, keys::kBackgroundPage, error))
- return false;
- if (background_url_.is_empty())
- return LoadBackgroundPage(extension, keys::kBackgroundPageLegacy, error);
- return true;
-}
-
-bool BackgroundInfo::LoadBackgroundPersistent(const Extension* extension,
- string16* error) {
- if (extension->is_platform_app()) {
- is_persistent_ = false;
- return true;
- }
-
- const base::Value* background_persistent = NULL;
- if (!extension->manifest()->Get(keys::kBackgroundPersistent,
- &background_persistent))
- return true;
-
- if (!background_persistent->GetAsBoolean(&is_persistent_)) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundPersistent);
- return false;
- }
-
- if (!has_background_page()) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundPersistentNoPage);
- return false;
- }
-
- return true;
-}
-
-bool BackgroundInfo::LoadAllowJSAccess(const Extension* extension,
- string16* error) {
- const base::Value* allow_js_access = NULL;
- if (!extension->manifest()->Get(keys::kBackgroundAllowJsAccess,
- &allow_js_access))
- return true;
-
- if (!allow_js_access->IsType(base::Value::TYPE_BOOLEAN) ||
- !allow_js_access->GetAsBoolean(&allow_js_access_)) {
- *error = ASCIIToUTF16(errors::kInvalidBackgroundAllowJsAccess);
- return false;
- }
-
- return true;
-}
-
-BackgroundManifestHandler::BackgroundManifestHandler() {
-}
-
-BackgroundManifestHandler::~BackgroundManifestHandler() {
-}
-
-bool BackgroundManifestHandler::Parse(Extension* extension, string16* error) {
- scoped_ptr<BackgroundInfo> info(new BackgroundInfo);
- if (!info->Parse(extension, error))
- return false;
-
- // Platform apps must have background pages.
- if (extension->is_platform_app() && !info->has_background_page()) {
- *error = ASCIIToUTF16(errors::kBackgroundRequiredForPlatformApps);
- return false;
- }
- // Lazy background pages are incompatible with the webRequest API.
- if (info->has_lazy_background_page() &&
- PermissionsData::GetInitialAPIPermissions(extension)->count(
- APIPermission::kWebRequest)) {
- *error = ASCIIToUTF16(errors::kWebRequestConflictsWithLazyBackground);
- return false;
- }
-
- extension->SetManifestData(kBackground, info.release());
- return true;
-}
-
-bool BackgroundManifestHandler::Validate(
- const Extension* extension,
- std::string* error,
- std::vector<InstallWarning>* warnings) const {
- // Validate that background scripts exist.
- const std::vector<std::string>& background_scripts =
- extensions::BackgroundInfo::GetBackgroundScripts(extension);
- for (size_t i = 0; i < background_scripts.size(); ++i) {
- if (!base::PathExists(
- extension->GetResource(background_scripts[i]).GetFilePath())) {
- *error = l10n_util::GetStringFUTF8(
- IDS_EXTENSION_LOAD_BACKGROUND_SCRIPT_FAILED,
- UTF8ToUTF16(background_scripts[i]));
- return false;
- }
- }
-
- // Validate background page location, except for hosted apps, which should use
- // an external URL. Background page for hosted apps are verified when the
- // extension is created (in Extension::InitFromValue)
- if (extensions::BackgroundInfo::HasBackgroundPage(extension) &&
- !extension->is_hosted_app() && background_scripts.empty()) {
- base::FilePath page_path =
- extension_file_util::ExtensionURLToRelativeFilePath(
- extensions::BackgroundInfo::GetBackgroundURL(extension));
- const base::FilePath path = extension->GetResource(page_path).GetFilePath();
- if (path.empty() || !base::PathExists(path)) {
- *error =
- l10n_util::GetStringFUTF8(
- IDS_EXTENSION_LOAD_BACKGROUND_PAGE_FAILED,
- page_path.LossyDisplayName());
- return false;
- }
- }
- return true;
-}
-
-bool BackgroundManifestHandler::AlwaysParseForType(Manifest::Type type) const {
- return type == Manifest::TYPE_PLATFORM_APP;
-}
-
-const std::vector<std::string> BackgroundManifestHandler::Keys() const {
- static const char* keys[] = {
- keys::kBackgroundAllowJsAccess,
- keys::kBackgroundPage,
- keys::kBackgroundPageLegacy,
- keys::kBackgroundPersistent,
- keys::kBackgroundScripts,
- keys::kPlatformAppBackgroundPage,
- keys::kPlatformAppBackgroundScripts
- };
- return std::vector<std::string>(keys, keys + arraysize(keys));
-}
-
-} // namespace extensions
« no previous file with comments | « chrome/common/extensions/background_info.h ('k') | chrome/common/extensions/chrome_manifest_handlers.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698