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

Side by Side Diff: chrome/common/extensions/extension.cc

Issue 7811006: Add full support for filesystem URLs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix merge errors Created 8 years, 8 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 2459 matching lines...) Expand 10 before | Expand all | Expand 10 after
2470 return NULL; 2470 return NULL;
2471 } 2471 }
2472 for (size_t i = 0; i < list_value->GetSize(); ++i) { 2472 for (size_t i = 0; i < list_value->GetSize(); ++i) {
2473 std::string filter; 2473 std::string filter;
2474 if (!list_value->GetString(i, &filter)) { 2474 if (!list_value->GetString(i, &filter)) {
2475 *error = ExtensionErrorUtils::FormatErrorMessageUTF16( 2475 *error = ExtensionErrorUtils::FormatErrorMessageUTF16(
2476 errors::kInvalidFileFilterValue, base::IntToString(i)); 2476 errors::kInvalidFileFilterValue, base::IntToString(i));
2477 return NULL; 2477 return NULL;
2478 } 2478 }
2479 StringToLowerASCII(&filter); 2479 StringToLowerASCII(&filter);
2480 URLPattern pattern(URLPattern::SCHEME_FILESYSTEM); 2480 if (!StartsWithASCII(filter,
2481 std::string(chrome::kFileSystemScheme) + ':',
2482 true)) {
2483 *error = ExtensionErrorUtils::FormatErrorMessageUTF16(
2484 errors::kInvalidURLPatternError, filter);
2485 return NULL;
2486 }
2487 // The user inputs filesystem:*; we don't actually implement scheme
2488 // wildcards in URLPattern, so transform to what will match correctly.
2489 filter.replace(0, 11, "chrome-extension://*/");
2490 URLPattern pattern(URLPattern::SCHEME_EXTENSION);
2491 pattern.set_partial_filesystem_support_hack(true);
2481 if (pattern.Parse(filter) != URLPattern::PARSE_SUCCESS) { 2492 if (pattern.Parse(filter) != URLPattern::PARSE_SUCCESS) {
2482 *error = ExtensionErrorUtils::FormatErrorMessageUTF16( 2493 *error = ExtensionErrorUtils::FormatErrorMessageUTF16(
2483 errors::kInvalidURLPatternError, filter); 2494 errors::kInvalidURLPatternError, filter);
2484 return NULL; 2495 return NULL;
2485 } 2496 }
2486 std::string path = pattern.path(); 2497 std::string path = pattern.path();
2487 bool allowed = path == "*" || path == "*.*" || 2498 bool allowed = path == "/*" || path == "/*.*" ||
2488 (path.compare(0, 2, "*.") == 0 && 2499 (path.compare(0, 3, "/*.") == 0 &&
2489 path.find_first_of('*', 2) == std::string::npos); 2500 path.find_first_of('*', 3) == std::string::npos);
2490 if (!allowed) { 2501 if (!allowed) {
2491 *error = ExtensionErrorUtils::FormatErrorMessageUTF16( 2502 *error = ExtensionErrorUtils::FormatErrorMessageUTF16(
2492 errors::kInvalidURLPatternError, filter); 2503 errors::kInvalidURLPatternError, filter);
2493 return NULL; 2504 return NULL;
2494 } 2505 }
2495 result->AddPattern(pattern); 2506 result->AddPattern(pattern);
2496 } 2507 }
2497 } 2508 }
2498 2509
2499 std::string default_icon; 2510 std::string default_icon;
(...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after
3685 already_disabled(false), 3696 already_disabled(false),
3686 extension(extension) {} 3697 extension(extension) {}
3687 3698
3688 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo( 3699 UpdatedExtensionPermissionsInfo::UpdatedExtensionPermissionsInfo(
3689 const Extension* extension, 3700 const Extension* extension,
3690 const ExtensionPermissionSet* permissions, 3701 const ExtensionPermissionSet* permissions,
3691 Reason reason) 3702 Reason reason)
3692 : reason(reason), 3703 : reason(reason),
3693 extension(extension), 3704 extension(extension),
3694 permissions(permissions) {} 3705 permissions(permissions) {}
OLDNEW
« no previous file with comments | « chrome/common/content_settings_pattern_unittest.cc ('k') | chrome/common/extensions/extension_manifests_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698