summaryrefslogtreecommitdiffstats
path: root/src/core/web_contents_adapter.cpp
diff options
context:
space:
mode:
authorMichael Bruning <michael.bruning@theqtcompany.com>2016-05-18 15:35:42 +0200
committerMichael BrĂ¼ning <michael.bruning@theqtcompany.com>2016-05-20 14:06:29 +0000
commitad8bc45732eeb2efa6e885d564c10761e7154889 (patch)
tree08f087373f01f97c922a6d8d19395e99252db38a /src/core/web_contents_adapter.cpp
parente02fd70aac4544aceda5289d12c751721ee9a3dc (diff)
Let setContent / setHtml fail when content is too big to load.
Chromium fails silently - except for a log entry - when the size of the content is larger than 2 MB. This was causing trouble because the user was not informed about the failed load at all. Task-number: QTBUG-53414 Change-Id: I80f3f36b5eac72f3809538c19ff314068b75b61d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/core/web_contents_adapter.cpp')
-rw-r--r--src/core/web_contents_adapter.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 66d133f60..c450768fa 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -68,6 +68,7 @@
#include "content/public/common/page_zoom.h"
#include "content/public/common/renderer_preferences.h"
#include "content/public/common/url_constants.h"
+#include "content/public/common/url_utils.h"
#include "content/public/common/web_preferences.h"
#include "third_party/WebKit/public/web/WebFindOptions.h"
@@ -485,7 +486,12 @@ void WebContentsAdapter::setContent(const QByteArray &data, const QString &mimeT
urlString.append(",");
urlString.append(encodedData.constData(), encodedData.length());
- content::NavigationController::LoadURLParams params((GURL(urlString)));
+ GURL dataUrlToLoad(urlString);
+ if (dataUrlToLoad.spec().size() > content::GetMaxURLChars()) {
+ d->adapterClient->loadFinished(false, baseUrl, false, net::ERR_ABORTED);
+ return;
+ }
+ content::NavigationController::LoadURLParams params((dataUrlToLoad));
params.load_type = content::NavigationController::LOAD_TYPE_DATA;
params.base_url_for_data_url = toGurl(baseUrl);
params.virtual_url_for_data_url = baseUrl.isEmpty() ? GURL(url::kAboutBlankURL) : toGurl(baseUrl);