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

Side by Side Diff: chrome/renderer/extensions/webstore_bindings.cc

Issue 65163003: Move GetWebstoreLaunchURL and GetWebstoreItemDetailURLPrefix to extensions/common/extension_urls.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mt Created 7 years, 1 month 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/renderer/extensions/webstore_bindings.h" 5 #include "chrome/renderer/extensions/webstore_bindings.h"
6 6
7 #include "base/strings/string_util.h" 7 #include "base/strings/string_util.h"
8 #include "chrome/common/extensions/extension.h" 8 #include "chrome/common/extensions/extension.h"
9 #include "chrome/common/extensions/extension_constants.h"
10 #include "chrome/common/extensions/extension_messages.h" 9 #include "chrome/common/extensions/extension_messages.h"
11 #include "chrome/renderer/extensions/chrome_v8_context.h" 10 #include "chrome/renderer/extensions/chrome_v8_context.h"
12 #include "content/public/renderer/render_view.h" 11 #include "content/public/renderer/render_view.h"
12 #include "extensions/common/extension_urls.h"
13 #include "grit/renderer_resources.h" 13 #include "grit/renderer_resources.h"
14 #include "third_party/WebKit/public/web/WebDocument.h" 14 #include "third_party/WebKit/public/web/WebDocument.h"
15 #include "third_party/WebKit/public/web/WebElement.h" 15 #include "third_party/WebKit/public/web/WebElement.h"
16 #include "third_party/WebKit/public/web/WebNode.h" 16 #include "third_party/WebKit/public/web/WebNode.h"
17 #include "third_party/WebKit/public/web/WebNodeList.h" 17 #include "third_party/WebKit/public/web/WebNodeList.h"
18 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" 18 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h"
19 #include "url/gurl.h" 19 #include "url/gurl.h"
20 #include "v8/include/v8.h" 20 #include "v8/include/v8.h"
21 21
22 using blink::WebDocument; 22 using blink::WebDocument;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 *error = kNoWebstoreItemLinkFoundError; 131 *error = kNoWebstoreItemLinkFoundError;
132 return false; 132 return false;
133 } 133 }
134 134
135 WebElement head = document.head(); 135 WebElement head = document.head();
136 if (head.isNull()) { 136 if (head.isNull()) {
137 *error = kNoWebstoreItemLinkFoundError; 137 *error = kNoWebstoreItemLinkFoundError;
138 return false; 138 return false;
139 } 139 }
140 140
141 GURL webstore_base_url = 141 GURL webstore_base_url(GetWebstoreItemDetailURLPrefix());
142 GURL(extension_urls::GetWebstoreItemDetailURLPrefix());
143 WebNodeList children = head.childNodes(); 142 WebNodeList children = head.childNodes();
144 for (unsigned i = 0; i < children.length(); ++i) { 143 for (unsigned i = 0; i < children.length(); ++i) {
145 WebNode child = children.item(i); 144 WebNode child = children.item(i);
146 if (!child.isElementNode()) 145 if (!child.isElementNode())
147 continue; 146 continue;
148 WebElement elem = child.to<WebElement>(); 147 WebElement elem = child.to<WebElement>();
149 148
150 if (!elem.hasTagName("link") || !elem.hasAttribute("rel") || 149 if (!elem.hasTagName("link") || !elem.hasAttribute("rel") ||
151 !elem.hasAttribute("href")) 150 !elem.hasAttribute("href"))
152 continue; 151 continue;
(...skipping 18 matching lines...) Expand all
171 if (webstore_url.scheme() != webstore_base_url.scheme() || 170 if (webstore_url.scheme() != webstore_base_url.scheme() ||
172 webstore_url.host() != webstore_base_url.host() || 171 webstore_url.host() != webstore_base_url.host() ||
173 !StartsWithASCII( 172 !StartsWithASCII(
174 webstore_url.path(), webstore_base_url.path(), true)) { 173 webstore_url.path(), webstore_base_url.path(), true)) {
175 *error = kInvalidWebstoreItemUrlError; 174 *error = kInvalidWebstoreItemUrlError;
176 return false; 175 return false;
177 } 176 }
178 177
179 std::string candidate_webstore_item_id = webstore_url.path().substr( 178 std::string candidate_webstore_item_id = webstore_url.path().substr(
180 webstore_base_url.path().length()); 179 webstore_base_url.path().length());
181 if (!extensions::Extension::IdIsValid(candidate_webstore_item_id)) { 180 if (!Extension::IdIsValid(candidate_webstore_item_id)) {
182 *error = kInvalidWebstoreItemUrlError; 181 *error = kInvalidWebstoreItemUrlError;
183 return false; 182 return false;
184 } 183 }
185 184
186 std::string reconstructed_webstore_item_url_string = 185 std::string reconstructed_webstore_item_url_string =
187 extension_urls::GetWebstoreItemDetailURLPrefix() + 186 GetWebstoreItemDetailURLPrefix() + candidate_webstore_item_id;
188 candidate_webstore_item_id;
189 if (reconstructed_webstore_item_url_string != webstore_url_string) { 187 if (reconstructed_webstore_item_url_string != webstore_url_string) {
190 *error = kInvalidWebstoreItemUrlError; 188 *error = kInvalidWebstoreItemUrlError;
191 return false; 189 return false;
192 } 190 }
193 191
194 *webstore_item_id = candidate_webstore_item_id; 192 *webstore_item_id = candidate_webstore_item_id;
195 return true; 193 return true;
196 } 194 }
197 195
198 *error = kNoWebstoreItemLinkFoundError; 196 *error = kNoWebstoreItemLinkFoundError;
(...skipping 18 matching lines...) Expand all
217 v8::Handle<v8::Value> argv[] = { 215 v8::Handle<v8::Value> argv[] = {
218 v8::Integer::New(install_id), 216 v8::Integer::New(install_id),
219 v8::Boolean::New(success), 217 v8::Boolean::New(success),
220 v8::String::New(error.c_str()) 218 v8::String::New(error.c_str())
221 }; 219 };
222 context()->module_system()->CallModuleMethod( 220 context()->module_system()->CallModuleMethod(
223 "webstore", "onInstallResponse", arraysize(argv), argv); 221 "webstore", "onInstallResponse", arraysize(argv), argv);
224 } 222 }
225 223
226 } // namespace extensions 224 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/permissions/permissions_data.cc ('k') | extensions/common/extension_urls.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698