| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/common/extensions/extension.h" | 5 #include "chrome/common/extensions/extension.h" |
| 6 | 6 |
| 7 #include "app/resource_bundle.h" | 7 #include "app/resource_bundle.h" |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
| 10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 GURL url = GetResourceURL(WideToUTF8(relative)); | 290 GURL url = GetResourceURL(WideToUTF8(relative)); |
| 291 ExtensionResource resource = GetResource(WideToUTF8(relative)); | 291 ExtensionResource resource = GetResource(WideToUTF8(relative)); |
| 292 result->css_scripts().push_back(UserScript::File( | 292 result->css_scripts().push_back(UserScript::File( |
| 293 resource.extension_root(), resource.relative_path(), url)); | 293 resource.extension_root(), resource.relative_path(), url)); |
| 294 } | 294 } |
| 295 } | 295 } |
| 296 | 296 |
| 297 return true; | 297 return true; |
| 298 } | 298 } |
| 299 | 299 |
| 300 ExtensionAction2* Extension::LoadExtensionAction2Helper( | 300 ExtensionAction* Extension::LoadExtensionActionHelper( |
| 301 const DictionaryValue* extension_action, std::string* error) { | 301 const DictionaryValue* extension_action, std::string* error) { |
| 302 scoped_ptr<ExtensionAction2> result(new ExtensionAction2()); | 302 scoped_ptr<ExtensionAction> result(new ExtensionAction()); |
| 303 result->set_extension_id(id()); | 303 result->set_extension_id(id()); |
| 304 | 304 |
| 305 // Page actions are hidden by default, and browser actions ignore | 305 // Page actions are hidden by default, and browser actions ignore |
| 306 // visibility. | 306 // visibility. |
| 307 result->SetIsVisible(ExtensionAction2::kDefaultTabId, false); | 307 result->SetIsVisible(ExtensionAction::kDefaultTabId, false); |
| 308 | 308 |
| 309 // TODO(EXTENSIONS_DEPRECATED): icons list is obsolete. | 309 // TODO(EXTENSIONS_DEPRECATED): icons list is obsolete. |
| 310 ListValue* icons = NULL; | 310 ListValue* icons = NULL; |
| 311 if (extension_action->HasKey(keys::kPageActionIcons) && | 311 if (extension_action->HasKey(keys::kPageActionIcons) && |
| 312 extension_action->GetList(keys::kPageActionIcons, &icons)) { | 312 extension_action->GetList(keys::kPageActionIcons, &icons)) { |
| 313 for (ListValue::const_iterator iter = icons->begin(); | 313 for (ListValue::const_iterator iter = icons->begin(); |
| 314 iter != icons->end(); ++iter) { | 314 iter != icons->end(); ++iter) { |
| 315 std::string path; | 315 std::string path; |
| 316 if (!(*iter)->GetAsString(&path) || path.empty()) { | 316 if (!(*iter)->GetAsString(&path) || path.empty()) { |
| 317 *error = errors::kInvalidPageActionIconPath; | 317 *error = errors::kInvalidPageActionIconPath; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 344 result->set_default_icon_path(default_icon); | 344 result->set_default_icon_path(default_icon); |
| 345 } | 345 } |
| 346 | 346 |
| 347 // Read the page action |default_title|. | 347 // Read the page action |default_title|. |
| 348 std::string title; | 348 std::string title; |
| 349 if (!extension_action->GetString(keys::kName, &title) && | 349 if (!extension_action->GetString(keys::kName, &title) && |
| 350 !extension_action->GetString(keys::kPageActionDefaultTitle, &title)) { | 350 !extension_action->GetString(keys::kPageActionDefaultTitle, &title)) { |
| 351 *error = errors::kInvalidPageActionDefaultTitle; | 351 *error = errors::kInvalidPageActionDefaultTitle; |
| 352 return NULL; | 352 return NULL; |
| 353 } | 353 } |
| 354 result->SetTitle(ExtensionAction2::kDefaultTabId, title); | 354 result->SetTitle(ExtensionAction::kDefaultTabId, title); |
| 355 | 355 |
| 356 // Read the action's |popup| (optional). | 356 // Read the action's |popup| (optional). |
| 357 DictionaryValue* popup = NULL; | 357 DictionaryValue* popup = NULL; |
| 358 std::string url_str; | 358 std::string url_str; |
| 359 if (extension_action->HasKey(keys::kPageActionPopup) && | 359 if (extension_action->HasKey(keys::kPageActionPopup) && |
| 360 !extension_action->GetDictionary(keys::kPageActionPopup, &popup) && | 360 !extension_action->GetDictionary(keys::kPageActionPopup, &popup) && |
| 361 !extension_action->GetString(keys::kPageActionPopup, &url_str)) { | 361 !extension_action->GetString(keys::kPageActionPopup, &url_str)) { |
| 362 *error = errors::kInvalidPageActionPopup; | 362 *error = errors::kInvalidPageActionPopup; |
| 363 return NULL; | 363 return NULL; |
| 364 } | 364 } |
| (...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 return false; | 939 return false; |
| 940 } | 940 } |
| 941 | 941 |
| 942 DictionaryValue* page_action_value; | 942 DictionaryValue* page_action_value; |
| 943 if (!list_value->GetDictionary(0, &page_action_value)) { | 943 if (!list_value->GetDictionary(0, &page_action_value)) { |
| 944 *error = errors::kInvalidPageAction; | 944 *error = errors::kInvalidPageAction; |
| 945 return false; | 945 return false; |
| 946 } | 946 } |
| 947 | 947 |
| 948 page_action_.reset( | 948 page_action_.reset( |
| 949 LoadExtensionAction2Helper(page_action_value, error)); | 949 LoadExtensionActionHelper(page_action_value, error)); |
| 950 if (!page_action_.get()) | 950 if (!page_action_.get()) |
| 951 return false; // Failed to parse page action definition. | 951 return false; // Failed to parse page action definition. |
| 952 } else if (source.HasKey(keys::kPageAction)) { | 952 } else if (source.HasKey(keys::kPageAction)) { |
| 953 DictionaryValue* page_action_value; | 953 DictionaryValue* page_action_value; |
| 954 if (!source.GetDictionary(keys::kPageAction, &page_action_value)) { | 954 if (!source.GetDictionary(keys::kPageAction, &page_action_value)) { |
| 955 *error = errors::kInvalidPageAction; | 955 *error = errors::kInvalidPageAction; |
| 956 return false; | 956 return false; |
| 957 } | 957 } |
| 958 | 958 |
| 959 page_action_.reset( | 959 page_action_.reset( |
| 960 LoadExtensionAction2Helper(page_action_value, error)); | 960 LoadExtensionActionHelper(page_action_value, error)); |
| 961 if (!page_action_.get()) | 961 if (!page_action_.get()) |
| 962 return false; // Failed to parse page action definition. | 962 return false; // Failed to parse page action definition. |
| 963 } | 963 } |
| 964 | 964 |
| 965 // Initialize browser action (optional). | 965 // Initialize browser action (optional). |
| 966 if (source.HasKey(keys::kBrowserAction)) { | 966 if (source.HasKey(keys::kBrowserAction)) { |
| 967 // Restrict extensions to one UI surface. | 967 // Restrict extensions to one UI surface. |
| 968 if (source.HasKey(keys::kPageAction) || source.HasKey(keys::kPageActions)) { | 968 if (source.HasKey(keys::kPageAction) || source.HasKey(keys::kPageActions)) { |
| 969 *error = errors::kOneUISurfaceOnly; | 969 *error = errors::kOneUISurfaceOnly; |
| 970 return false; | 970 return false; |
| 971 } | 971 } |
| 972 | 972 |
| 973 DictionaryValue* browser_action_value; | 973 DictionaryValue* browser_action_value; |
| 974 if (!source.GetDictionary(keys::kBrowserAction, &browser_action_value)) { | 974 if (!source.GetDictionary(keys::kBrowserAction, &browser_action_value)) { |
| 975 *error = errors::kInvalidBrowserAction; | 975 *error = errors::kInvalidBrowserAction; |
| 976 return false; | 976 return false; |
| 977 } | 977 } |
| 978 | 978 |
| 979 browser_action_.reset( | 979 browser_action_.reset( |
| 980 LoadExtensionAction2Helper(browser_action_value, error)); | 980 LoadExtensionActionHelper(browser_action_value, error)); |
| 981 if (!browser_action_.get()) | 981 if (!browser_action_.get()) |
| 982 return false; // Failed to parse browser action definition. | 982 return false; // Failed to parse browser action definition. |
| 983 } | 983 } |
| 984 | 984 |
| 985 // Initialize the permissions (optional). | 985 // Initialize the permissions (optional). |
| 986 if (source.HasKey(keys::kPermissions)) { | 986 if (source.HasKey(keys::kPermissions)) { |
| 987 ListValue* permissions = NULL; | 987 ListValue* permissions = NULL; |
| 988 if (!source.GetList(keys::kPermissions, &permissions)) { | 988 if (!source.GetList(keys::kPermissions, &permissions)) { |
| 989 *error = ExtensionErrorUtils::FormatErrorMessage( | 989 *error = ExtensionErrorUtils::FormatErrorMessage( |
| 990 errors::kInvalidPermissions, ""); | 990 errors::kInvalidPermissions, ""); |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1171 UserScript::PatternList::const_iterator pattern = | 1171 UserScript::PatternList::const_iterator pattern = |
| 1172 content_script->url_patterns().begin(); | 1172 content_script->url_patterns().begin(); |
| 1173 for (; pattern != content_script->url_patterns().end(); ++pattern) { | 1173 for (; pattern != content_script->url_patterns().end(); ++pattern) { |
| 1174 if (pattern->match_subdomains() && pattern->host().empty()) | 1174 if (pattern->match_subdomains() && pattern->host().empty()) |
| 1175 return true; | 1175 return true; |
| 1176 } | 1176 } |
| 1177 } | 1177 } |
| 1178 | 1178 |
| 1179 return false; | 1179 return false; |
| 1180 } | 1180 } |
| OLD | NEW |