summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/web_contents_adapter.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index ea11d5e9c..3ab6ac951 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -518,7 +518,19 @@ void WebContentsAdapter::load(const QUrl &url)
Q_UNUSED(guard);
Q_D(WebContentsAdapter);
- content::NavigationController::LoadURLParams params(toGurl(url));
+ GURL gurl = toGurl(url);
+
+ // Add URL scheme if missing from view-source URL.
+ if (url.scheme() == content::kViewSourceScheme) {
+ QUrl pageUrl = QUrl(url.toString().remove(0, strlen(content::kViewSourceScheme) + 1));
+ if (pageUrl.scheme().isEmpty()) {
+ QUrl extendedUrl = QUrl::fromUserInput(pageUrl.toString());
+ extendedUrl = QUrl(QString("%1:%2").arg(content::kViewSourceScheme, extendedUrl.toString()));
+ gurl = toGurl(extendedUrl);
+ }
+ }
+
+ content::NavigationController::LoadURLParams params(gurl);
params.transition_type = ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR);
params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE;
d->webContents->GetController().LoadURLWithParams(params);