OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/browser/extensions/extension_tabs_module.h" | 5 #include "chrome/browser/extensions/extension_tabs_module.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/base64.h" | 10 #include "base/base64.h" |
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
768 | 768 |
769 if (!url.is_valid()) { | 769 if (!url.is_valid()) { |
770 error_ = ExtensionErrorUtils::FormatErrorMessage(keys::kInvalidUrlError, | 770 error_ = ExtensionErrorUtils::FormatErrorMessage(keys::kInvalidUrlError, |
771 url_string); | 771 url_string); |
772 return false; | 772 return false; |
773 } | 773 } |
774 | 774 |
775 // JavaScript URLs can do the same kinds of things as cross-origin XHR, so | 775 // JavaScript URLs can do the same kinds of things as cross-origin XHR, so |
776 // we need to check host permissions before allowing them. | 776 // we need to check host permissions before allowing them. |
777 if (url.SchemeIs(chrome::kJavaScriptScheme)) { | 777 if (url.SchemeIs(chrome::kJavaScriptScheme)) { |
778 const Extension* extension = GetExtension(); | 778 if (!GetExtension()->CanExecuteScriptOnPage( |
779 const std::vector<URLPattern> host_permissions = | 779 contents->tab_contents()->GetURL(), NULL, &error_)) { |
780 extension->host_permissions(); | |
781 if (!Extension::CanExecuteScriptOnPage( | |
782 contents->tab_contents()->GetURL(), | |
783 extension->CanExecuteScriptEverywhere(), | |
784 &host_permissions, | |
785 NULL, | |
786 &error_)) { | |
787 return false; | 780 return false; |
788 } | 781 } |
789 | 782 |
790 // TODO(aa): How does controller queue URLs? Is there any chance that this | 783 // TODO(aa): How does controller queue URLs? Is there any chance that this |
791 // JavaScript URL will end up applying to something other than | 784 // JavaScript URL will end up applying to something other than |
792 // controller->GetURL()? | 785 // controller->GetURL()? |
793 } | 786 } |
794 | 787 |
795 controller.LoadURL(url, GURL(), PageTransition::LINK); | 788 controller.LoadURL(url, GURL(), PageTransition::LINK); |
796 | 789 |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1237 } | 1230 } |
1238 | 1231 |
1239 static GURL ResolvePossiblyRelativeURL(std::string url_string, | 1232 static GURL ResolvePossiblyRelativeURL(std::string url_string, |
1240 const Extension* extension) { | 1233 const Extension* extension) { |
1241 GURL url = GURL(url_string); | 1234 GURL url = GURL(url_string); |
1242 if (!url.is_valid()) | 1235 if (!url.is_valid()) |
1243 url = extension->GetResourceURL(url_string); | 1236 url = extension->GetResourceURL(url_string); |
1244 | 1237 |
1245 return url; | 1238 return url; |
1246 } | 1239 } |
OLD | NEW |