summaryrefslogtreecommitdiffstats
path: root/src/core/web_contents_adapter.cpp
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2016-07-27 09:14:52 +0200
committerPeter Varga <pvarga@inf.u-szeged.hu>2016-08-24 21:24:30 +0000
commit822763ddda98f04339df44641f9b0d0f72ff6466 (patch)
treeb46d1bb211165acb3445ddc6bbb92d723726387f /src/core/web_contents_adapter.cpp
parent7da3fa4e73a37b0d63a98a4d476447071075935f (diff)
Autocomplete view-source URL
User may miss the URL scheme (eg. http://) when type a view-source url into the browser's location bar (eg. view-source:qt.io). This is not handled by the Chromium thus will produce an empty view-source page. The new autocompletion extends the incomplete view-source URL thus it will provide valid URL if it is possible (eg. view-source:http://qt.io/) Change-Id: I3edcd271cd0a971c9754e875db8f2a55a9a545de Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-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);