Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-75302

QWebEngineView setPage doesn't delete old page

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Not Evaluated
    • None
    • 5.12.1
    • WebEngine
    • None
    • Windows

    Description

      After upgrading to Qt 5.12 from Qt 5.11, I noticed that setPage doesn't delete the old page anymore.

      It causes the corresponding Qtwebengineprocess not be terminated.

      The Qt 5.11 implementation:
       
      {{void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
      {
      ... if (view) { // Un-bind view from its current page.if (QWebEnginePage *oldPage = view->d_func()->page)

      { oldPage->disconnect(view); oldPage->d_func()->view = 0; oldPage->d_func()->adapter->reattachRWHV(); if (oldPage->parent() == view) delete oldPage; }

      view->d_func()->page = page;
      }}}

      The Qt 5.12 implemenation:
       
      {{void QWebEngineViewPrivate::pageChanged(QWebEnginePage *oldPage, QWebEnginePage *newPage)

      { Q_Q(QWebEngineView); if (oldPage) \{ oldPage->disconnect(q); }

      if (newPage) {
      QObject::connect(newPage, &QWebEnginePage::titleChanged, q, &QWebEngineView::titleChanged);
      QObject::connect(newPage, &QWebEnginePage::urlChanged, q, &QWebEngineView::urlChanged);
      QObject::connect(newPage, &QWebEnginePage::iconUrlChanged, q, &QWebEngineView::iconUrlChanged);
      QObject::connect(newPage, &QWebEnginePage::iconChanged, q, &QWebEngineView::iconChanged);
      QObject::connect(newPage, &QWebEnginePage::loadStarted, q, &QWebEngineView::loadStarted);
      QObject::connect(newPage, &QWebEnginePage::loadProgress, q, &QWebEngineView::loadProgress);
      QObject::connect(newPage, &QWebEnginePage::loadFinished, q, &QWebEngineView::loadFinished);
      QObject::connect(newPage, &QWebEnginePage::selectionChanged, q, &QWebEngineView::selectionChanged);
      QObject::connect(newPage, &QWebEnginePage::renderProcessTerminated, q, &QWebEngineView::renderProcessTerminated);
      }

      auto oldUrl = oldPage ? oldPage->url() : QUrl();
      auto newUrl = newPage ? newPage->url() : QUrl(); if (oldUrl != newUrl)
      Q_EMIT q->urlChanged(newUrl);

      auto oldTitle = oldPage ? oldPage->title() : QString();
      auto newTitle = newPage ? newPage->title() : QString(); if (oldTitle != newTitle)
      Q_EMIT q->titleChanged(newTitle);

      auto oldIcon = oldPage ? oldPage->iconUrl() : QUrl();
      auto newIcon = newPage ? newPage->iconUrl() : QUrl(); if (oldIcon != newIcon) {
      Q_EMIT q->iconUrlChanged(newIcon);
      Q_EMIT q->iconChanged(newPage ? newPage->icon() : QIcon());
      } if ((oldPage && oldPage->hasSelection()) || (newPage && newPage->hasSelection()))
      Q_EMIT q->selectionChanged();
      }}}

       

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              qt_webengine_team Qt WebEngine Team
              oliverwu Oliver Wu
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes