Index: chrome/browser/extensions/extension_toolstrip_api.cc |
diff --git a/chrome/browser/extensions/extension_toolstrip_api.cc b/chrome/browser/extensions/extension_toolstrip_api.cc |
index a502dcaa7196bc41cdd49153a3a43a9e5cd986a6..5c58a5e822cedee3f313b1821a422c1c60057cd5 100644 |
--- a/chrome/browser/extensions/extension_toolstrip_api.cc |
+++ b/chrome/browser/extensions/extension_toolstrip_api.cc |
@@ -33,6 +33,21 @@ const char kBadHeightError[] = "Bad height."; |
// TODO(erikkay) what are good values here? |
const int kMinHeight = 50; |
const int kMaxHeight = 1000; |
+ |
+// If |url_string| is a valid URL, simply return that, otherwise see if it's |
+// a valid extension URL, relative to the |current_url|. |
+static GURL ResolveURLForExtension(const std::string& url_string, |
Matt Perry
2009/09/15 20:31:57
I think Resolve works on absolute URLs too, so thi
|
+ const GURL& current_url, |
+ Extension *extension) { |
+ GURL url = GURL(url_string); |
+ if (!url.is_valid()) { |
+ url = current_url.Resolve(url_string); |
+ if (url.is_empty()) |
+ return url; |
+ } |
+ return url; |
+} |
+ |
}; // namespace |
namespace keys = extension_tabs_module_constants; |
@@ -82,14 +97,15 @@ bool ToolstripExpandFunction::RunImpl() { |
return false; |
} |
- |
GURL url; |
if (args->HasKey(keys::kUrlKey)) { |
std::string url_string; |
EXTENSION_FUNCTION_VALIDATE(args->GetString(keys::kUrlKey, |
&url_string)); |
- url = GURL(url_string); |
- if (!url.is_valid() && !url.is_empty()) { |
+ url = ResolveURLForExtension(url_string, |
+ dispatcher()->url(), |
+ dispatcher()->GetExtension()); |
+ if (!url.is_valid()) { |
error_ = kInvalidURLError; |
return false; |
} |
@@ -117,8 +133,10 @@ bool ToolstripCollapseFunction::RunImpl() { |
std::string url_string; |
EXTENSION_FUNCTION_VALIDATE(args->GetString(keys::kUrlKey, |
&url_string)); |
- url = GURL(url_string); |
- if (!url.is_valid() && !url.is_empty()) { |
+ url = ResolveURLForExtension(url_string, |
+ dispatcher()->url(), |
+ dispatcher()->GetExtension()); |
+ if (!url.is_valid()) { |
error_ = kInvalidURLError; |
return false; |
} |