| OLD | NEW |
| 1 // Copyright 2009 The Chromium Authors. All rights reserved. | 1 // Copyright 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/user_script.h" | 5 #include "chrome/common/extensions/user_script.h" |
| 6 | 6 |
| 7 #include "base/pickle.h" | 7 #include "base/pickle.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 | 9 |
| 10 namespace { | 10 namespace { |
| 11 static bool UrlMatchesPatterns(const UserScript::PatternList* patterns, | 11 |
| 12 const GURL& url) { | 12 bool UrlMatchesPatterns(const UserScript::PatternList* patterns, |
| 13 const GURL& url) { |
| 13 for (UserScript::PatternList::const_iterator pattern = patterns->begin(); | 14 for (UserScript::PatternList::const_iterator pattern = patterns->begin(); |
| 14 pattern != patterns->end(); ++pattern) { | 15 pattern != patterns->end(); ++pattern) { |
| 15 if (pattern->MatchesUrl(url)) | 16 if (pattern->MatchesUrl(url)) |
| 16 return true; | 17 return true; |
| 17 } | 18 } |
| 18 | 19 |
| 19 return false; | 20 return false; |
| 20 } | 21 } |
| 21 | 22 |
| 22 static bool UrlMatchesGlobs(const std::vector<std::string>* globs, | 23 bool UrlMatchesGlobs(const std::vector<std::string>* globs, |
| 23 const GURL& url) { | 24 const GURL& url) { |
| 24 for (std::vector<std::string>::const_iterator glob = globs->begin(); | 25 for (std::vector<std::string>::const_iterator glob = globs->begin(); |
| 25 glob != globs->end(); ++glob) { | 26 glob != globs->end(); ++glob) { |
| 26 if (MatchPatternASCII(url.spec(), *glob)) | 27 if (MatchPatternASCII(url.spec(), *glob)) |
| 27 return true; | 28 return true; |
| 28 } | 29 } |
| 29 | 30 |
| 30 return false; | 31 return false; |
| 31 } | 32 } |
| 32 } | 33 |
| 34 } // namespace |
| 33 | 35 |
| 34 // static | 36 // static |
| 35 const char UserScript::kFileExtension[] = ".user.js"; | 37 const char UserScript::kFileExtension[] = ".user.js"; |
| 36 | 38 |
| 37 // static | 39 // static |
| 38 const int UserScript::kValidUserScriptSchemes = | 40 const int UserScript::kValidUserScriptSchemes = |
| 39 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | | 41 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | |
| 40 URLPattern::SCHEME_FILE | URLPattern::SCHEME_FTP; | 42 URLPattern::SCHEME_FILE | URLPattern::SCHEME_FTP; |
| 41 | 43 |
| 42 bool UserScript::HasUserScriptFileExtension(const GURL& url) { | 44 bool UserScript::HasUserScriptFileExtension(const GURL& url) { |
| 43 return EndsWith(url.ExtractFileName(), kFileExtension, false); | 45 return EndsWith(url.ExtractFileName(), kFileExtension, false); |
| 44 } | 46 } |
| 45 | 47 |
| 46 bool UserScript::HasUserScriptFileExtension(const FilePath& path) { | 48 bool UserScript::HasUserScriptFileExtension(const FilePath& path) { |
| 47 static FilePath extension(FilePath().AppendASCII(kFileExtension)); | 49 static FilePath extension(FilePath().AppendASCII(kFileExtension)); |
| 48 return EndsWith(path.BaseName().value(), extension.value(), false); | 50 return EndsWith(path.BaseName().value(), extension.value(), false); |
| 49 } | 51 } |
| 50 | 52 |
| 53 |
| 54 UserScript::File::File(const FilePath& extension_root, |
| 55 const FilePath& relative_path, |
| 56 const GURL& url) |
| 57 : extension_root_(extension_root), |
| 58 relative_path_(relative_path), |
| 59 url_(url) { |
| 60 } |
| 61 |
| 62 UserScript::File::File() {} |
| 63 |
| 64 UserScript::File::~File() {} |
| 65 |
| 66 UserScript::UserScript() |
| 67 : run_location_(DOCUMENT_IDLE), emulate_greasemonkey_(false), |
| 68 match_all_frames_(false), incognito_enabled_(false), |
| 69 allow_file_access_(false) { |
| 70 } |
| 71 |
| 72 UserScript::~UserScript() { |
| 73 } |
| 74 |
| 75 void UserScript::add_url_pattern(const URLPattern& pattern) { |
| 76 url_patterns_.push_back(pattern); |
| 77 } |
| 78 |
| 79 void UserScript::clear_url_patterns() { url_patterns_.clear(); } |
| 80 |
| 51 bool UserScript::MatchesUrl(const GURL& url) const { | 81 bool UserScript::MatchesUrl(const GURL& url) const { |
| 52 if (url_patterns_.size() > 0) { | 82 if (url_patterns_.size() > 0) { |
| 53 if (!UrlMatchesPatterns(&url_patterns_, url)) | 83 if (!UrlMatchesPatterns(&url_patterns_, url)) |
| 54 return false; | 84 return false; |
| 55 } | 85 } |
| 56 | 86 |
| 57 if (globs_.size() > 0) { | 87 if (globs_.size() > 0) { |
| 58 if (!UrlMatchesGlobs(&globs_, url)) | 88 if (!UrlMatchesGlobs(&globs_, url)) |
| 59 return false; | 89 return false; |
| 60 } | 90 } |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 // Read css scripts. | 212 // Read css scripts. |
| 183 size_t num_css_files = 0; | 213 size_t num_css_files = 0; |
| 184 CHECK(pickle.ReadSize(iter, &num_css_files)); | 214 CHECK(pickle.ReadSize(iter, &num_css_files)); |
| 185 css_scripts_.clear(); | 215 css_scripts_.clear(); |
| 186 for (size_t i = 0; i < num_css_files; ++i) { | 216 for (size_t i = 0; i < num_css_files; ++i) { |
| 187 File file; | 217 File file; |
| 188 file.Unpickle(pickle, iter); | 218 file.Unpickle(pickle, iter); |
| 189 css_scripts_.push_back(file); | 219 css_scripts_.push_back(file); |
| 190 } | 220 } |
| 191 } | 221 } |
| OLD | NEW |