Recreate page on webengine render error/crash

This commit is contained in:
Gres 2020-03-21 13:04:50 +03:00
parent 705bae636d
commit 1757b2b89f
2 changed files with 33 additions and 22 deletions

View File

@ -130,28 +130,7 @@ void Translator::updateSettings()
return;
}
for (const auto &script : loaded) {
const auto &scriptName = script.first;
const auto &scriptText = script.second;
const auto pageIt = pages_.emplace(
scriptName, std::make_unique<WebPage>(*this, scriptText, scriptName));
SOFT_ASSERT(pageIt.second, continue);
const auto &page = pageIt.first->second;
page->setIgnoreSslErrors(settings_.ignoreSslErrors);
page->setTimeout(settings_.translationTimeout);
auto log = new QTextEdit(tabs_);
tabs_->addTab(log, scriptName);
connect(page.get(), &WebPage::log, //
log, &QTextEdit::append);
connect(page.get(), &WebPage::urlChanged, //
this, &Translator::updateUrl);
SOFT_ASSERT(log->document(), continue)
log->document()->setMaximumBlockCount(1000);
}
for (const auto &script : loaded) createPage(script.first, script.second);
if (settings_.debugMode) {
show();
@ -160,6 +139,37 @@ void Translator::updateSettings()
}
}
void Translator::createPage(const QString &scriptName,
const QString &scriptText)
{
pages_.erase(scriptName);
const auto pageIt = pages_.emplace(
scriptName, std::make_unique<WebPage>(*this, scriptText, scriptName));
SOFT_ASSERT(pageIt.second, return );
const auto &page = pageIt.first->second;
page->setIgnoreSslErrors(settings_.ignoreSslErrors);
page->setTimeout(settings_.translationTimeout);
auto log = new QTextEdit(tabs_);
tabs_->addTab(log, scriptName);
connect(page.get(), &WebPage::log, //
log, &QTextEdit::append);
connect(page.get(), &WebPage::urlChanged, //
this, &Translator::updateUrl);
connect(page.get(), &WebPage::renderProcessTerminated, //
this,
[this, scriptName,
scriptText](WebPage::RenderProcessTerminationStatus status) {
if (status != WebPage::NormalTerminationStatus)
createPage(scriptName, scriptText);
});
SOFT_ASSERT(log->document(), return )
log->document()->setMaximumBlockCount(1000);
}
WebPage *Translator::currentPage() const
{
const auto index = tabs_->currentIndex();

View File

@ -32,6 +32,7 @@ private:
void setPageLoadImages(bool isOn);
void processQueue();
void markTranslated(const TaskPtr &task);
void createPage(const QString &scriptName, const QString &scriptText);
Manager &manager_;
const Settings &settings_;