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

Unified Diff: chrome/browser/guestview/webview/webview_guest.cc

Issue 27408004: <webview>: Resolve relative paths as chrome-extension: URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactor + addressed creis' comments Created 7 years, 2 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/guestview/webview/webview_guest.cc
diff --git a/chrome/browser/guestview/webview/webview_guest.cc b/chrome/browser/guestview/webview/webview_guest.cc
index d5c66fb66b6028d2bb77833c9d2f90d358626d4a..5e67ebbe7877586270265e5fce7a90f85ed02d02 100644
--- a/chrome/browser/guestview/webview/webview_guest.cc
+++ b/chrome/browser/guestview/webview/webview_guest.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/guestview/webview/webview_guest.h"
#include "base/command_line.h"
+#include "base/strings/stringprintf.h"
#include "chrome/browser/extensions/api/web_request/web_request_api.h"
#include "chrome/browser/extensions/extension_renderer_state.h"
#include "chrome/browser/extensions/extension_web_contents_observer.h"
@@ -27,6 +28,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/result_codes.h"
+#include "extensions/common/constants.h"
#include "net/base/net_errors.h"
#if defined(ENABLE_PLUGINS)
@@ -107,8 +109,9 @@ void AttachWebViewHelpers(WebContents* contents) {
} // namespace
-WebViewGuest::WebViewGuest(WebContents* guest_web_contents)
- : GuestView(guest_web_contents),
+WebViewGuest::WebViewGuest(WebContents* guest_web_contents,
+ const std::string& extension_id)
+ : GuestView(guest_web_contents, extension_id),
WebContentsObserver(guest_web_contents),
script_executor_(new extensions::ScriptExecutor(guest_web_contents,
&script_observers_)),
@@ -141,7 +144,6 @@ WebViewGuest* WebViewGuest::FromWebContents(WebContents* contents) {
}
void WebViewGuest::Attach(WebContents* embedder_web_contents,
- const std::string& extension_id,
const base::DictionaryValue& args) {
std::string user_agent_override;
if (args.GetString(webview::kParameterUserAgentOverride,
@@ -151,8 +153,7 @@ void WebViewGuest::Attach(WebContents* embedder_web_contents,
SetUserAgentOverride("");
}
- GuestView::Attach(
- embedder_web_contents, extension_id, args);
+ GuestView::Attach(embedder_web_contents, args);
AddWebViewToExtensionRendererState();
}
@@ -552,6 +553,17 @@ void WebViewGuest::RemoveWebViewFromExtensionRendererState(
web_contents->GetRoutingID()));
}
+GURL WebViewGuest::ResolveURL(const std::string& src) {
+ if (extension_id().empty()) {
+ NOTREACHED();
+ return GURL(src);
+ }
+ GURL default_url(base::StringPrintf("%s://%s/",
+ extensions::kExtensionScheme,
+ extension_id().c_str()));
+ return default_url.Resolve(src);
+}
+
void WebViewGuest::SizeChanged(const gfx::Size& old_size,
const gfx::Size& new_size) {
scoped_ptr<DictionaryValue> args(new DictionaryValue());

Powered by Google App Engine
This is Rietveld 408576698