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

Unified Diff: chrome/browser/extensions/extension_toolstrip_api.cc

Issue 195093: handle mole/toolstrip URLs properly (Closed)
Patch Set: Created 11 years, 3 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 side-by-side diff with in-line comments
Download patch
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;
}
« no previous file with comments | « chrome/browser/extensions/extension_host.cc ('k') | chrome/test/data/extensions/api_test/toolstrip/folder/relative.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698