1. Aug 15, 2014
    • Jocelyn Turcotte's avatar
      Fix a crash in WebEngineSettings when opening a new window · 2694ec66
      Jocelyn Turcotte authored
      
      A new window means that the QWebEnginePage gets its WebContentsAdapter
      swapped and that the pointer in WebEngineSettings must be updated.
      
      Do the WebContentsAdapter-to-WebEngineSettings binding in
      WebContentsAdapter::initialize to cover both cases.
      
      This also refactors the way that QWebEngineSettings is created by
      removing the need to pass a QWebEngineSettingsPrivate instance to be
      adopted, and also move the global settings construction logic in
      the singleton accessor instead of relying on the fact that it uses
      a different contructor.
      
      Change-Id: I6f8a2ed1407a4b25f9898526db9432721c354ddf
      Reviewed-by: default avatarAndras Becsi <andras.becsi@digia.com>
      Reviewed-by: default avatarAllan Sandfeld Jensen <allan.jensen@digia.com>
      2694ec66
  2. Aug 12, 2014
  3. Aug 09, 2014
    • Pierre Rossi's avatar
      Ground work for Settings/Preferences · 37fcb151
      Pierre Rossi authored
      
      Core interface to expose toggling some of the WebPreferences
      for now and most probably some of the WebRuntimeFeatures soon.
      
      The whole dummy settings business is meant to keep things
      from breaking too much when bisecting, because it is assumed
      that there are always valid settings for a given adapterClient.
      
      Change-Id: Ic0a62bcb5af8c0254436dc770b43cde5016c3bbd
      Reviewed-by: default avatarAllan Sandfeld Jensen <allan.jensen@digia.com>
      37fcb151
  4. Aug 04, 2014
    • Jocelyn Turcotte's avatar
      Don't inherit from Qt private types · 1c2a4da1
      Jocelyn Turcotte authored
      
      Do the d_ptr magic ourselves to avoid having to include private
      headers from qtcore, qtgui and qtdeclarative.
      
      It is hackish to hide QObject's d_ptr member to have the macros
      working in a public class, but if anything goes wrong we just
      need to replace the private macro convenience while maintaining
      the binary compatibility of the stored extra opaque pointer.
      
      Change-Id: Idb92f4f902826bef9068a5c2ef6ea31fc3fa15b2
      Reviewed-by: default avatarAndras Becsi <andras.becsi@digia.com>
      1c2a4da1
  5. Aug 01, 2014
    • Jocelyn Turcotte's avatar
      Don't use QAuthenticator private API · abba8dd0
      Jocelyn Turcotte authored
      
      QAuthenticator::setRealm has been added to QtNetwork 5.4.
      
      Change-Id: I7eb503956d72a96e1f5030896cdf9adb7d4030cb
      Reviewed-by: default avatarAndras Becsi <andras.becsi@digia.com>
      abba8dd0
    • Jocelyn Turcotte's avatar
      Fix tab focus in the widgets and QML webviews · 04f58ffc
      Jocelyn Turcotte authored
      
      Fixes:
      - Make sure that we call SetInitialFocus when giving focus through Tab
        This does the same as would WebContents::FocusThroughTabTraversal
      - Implement QWebEnginePagePrivate::passOnFocus
      - Set each new RWHVQtDelegate as the focus proxy of the QWebEngineView
      - Make sure that the widgets delegate accepts the tab focus policy
      
      Cleaups:
      - RenderWidgetHostViewQtDelegateQuick doesn't need to be a focus scope,
        it doesn't have any children
      - We don't need to reimplement QQuickWebEngineView::forceActiveFocus
        since the view is now a focus scope
      - Do not explicitly setFocus(true) on the QQuickWebEngineView,
        the application should decide this through the API
      
      Change-Id: I817dc2c895d4fff4aa3536c71ecc5d306bb3bee0
      Reviewed-by: default avatarAndras Becsi <andras.becsi@digia.com>
      04f58ffc
  6. Jul 30, 2014
    • Allan Sandfeld Jensen's avatar
      Add api to get the favicon URL · a99922af
      Allan Sandfeld Jensen authored
      
      Adds one of the missing pieces of the QWebFrame and QWebView APIs.
      Unlike the QtWebKit version this only fetches the favicon URL, and not
      the icon. This is because we do not want to implement an icon database,
      and that the icon would be loaded asynchronous anyway, bringing no
      guarantee to be a valid icon/image yet.
      
      Change-Id: I227311ae3676044da850e687b82bee752b5079c8
      Reviewed-by: default avatarJocelyn Turcotte <jocelyn.turcotte@digia.com>
      a99922af
  7. Jul 09, 2014
    • Frederik Gladhorn's avatar
      Add core accessibility · a9853701
      Frederik Gladhorn authored
      
      This commit adds the basics to bridge the blink
      accessibility classes to QAccessibleInterfaces.
      
      Note that it needs two follow up commits to implement the bridging from
      the QWidget/Qt Quick worlds.
      
      [ChangeLog][Accessibility] QtWebEngine now has accessibility
      support, enabling assistive technology such as screen readers to work
      with it.
      
      Change-Id: Ied1d97e61a024115ac7a9245331211f6d9fac1b4
      Reviewed-by: default avatarZeno Albisser <zeno.albisser@digia.com>
      Reviewed-by: default avatarAndras Becsi <andras.becsi@digia.com>
      a9853701
  8. May 15, 2014
  9. May 12, 2014
    • Jocelyn Turcotte's avatar
      Remove the xPath argument from runJavaScript · 55f1130b
      Jocelyn Turcotte authored
      
      This value is only used internally by Chromium and risks being removed
      at anytime, for which we would then have to maintain a downstream
      implementation.
      
      Chromium also only supports frame values, while a complete support of
      the interface would require also supporting this xPath to point to
      individual document element by affecting the value of "this", the same
      way that QWebElement::evaluateJavaScript allowed in QtWebKit.
      
      Change-Id: Id0cb1b8e3bdf9a6db0ca786fb5eb46ffd726d165
      Reviewed-by: default avatarMichael Bruning <michael.bruning@digia.com>
      55f1130b
  10. May 08, 2014
  11. Apr 29, 2014
  12. Apr 15, 2014
  13. Apr 14, 2014
  14. Apr 08, 2014
  15. Mar 31, 2014
  16. Mar 21, 2014
    • Jocelyn Turcotte's avatar
      Base load signals on Blink loader events · f06cb10c
      Jocelyn Turcotte authored
      
      This mainly remove the use of the LoadingStateChanged callback, which
      is tied to DidStartLoading and DidStopLoading.
      Those signals are handled from the browser process side, also wrapping
      the time where the render process is initialized. We can't rely on
      those signals for loadStarted, but afterward rely on the Blink loader
      for loadFinished. We must use the same source for both.
      
      Instead only rely on Blink callbacks ultimately related to network
      events. This gives us a behavior closer to QtWebKit.
      
      The major compromise that this forces us to to accept is that
      loadStarted is now triggered asynchronously. This will basically break
      anything expecting loadStarted to be emitted synchronously from the
      load method.
      
      This also adjust autotests to get a few more passing.
      
      Initial-patch-by: default avatarPierre Rossi <pierre.rossi@digia.com>
      Change-Id: Ib6c0170df891d1b7f8ed4dc1d483985523e267dc
      Reviewed-by: default avatarPierre Rossi <pierre.rossi@gmail.com>
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      f06cb10c
  17. Feb 28, 2014
    • Jocelyn Turcotte's avatar
      Add HTTP and proxy authentication signals directly to QWebEnginePage · 970ccc7f
      Jocelyn Turcotte authored
      
      This allows handling calls that would be signaled by QNetworkAccessManager
      in QtWebKit.
      This pulls QtNetwork as a dependency of the QtWebEngineWidgets module
      to be able to use QAuthenticator, but isn't required otherwise.
      
      Only the request URL is available in the case of HTTP authentication
      (no access to HTTP request headers that the QNetworkReply would allow)
      and only the proxy host name in the case case of proxy authentication.
      
      This keeps the API synchronous the same way, as QtWebKit did, in
      favor of source compatibility at the cost of requiring a modal
      dialog, even though the implementation doesn't require it.
      
      Change-Id: I9e021def38e6107c9e66d2de8f86bd0328d543df
      Reviewed-by: default avatarMichael Bruning <michael.bruning@digia.com>
      970ccc7f
  18. Feb 21, 2014
  19. Feb 20, 2014
  20. Feb 13, 2014
    • Jocelyn Turcotte's avatar
      Implement QWebEnginePage::findText · 324706a5
      Jocelyn Turcotte authored
      
      A few changes to the API:
      - Return the success result asynchronously.
      - FindWrapsAroundDocument and HighlightAllOccurrences are enabled by
        defaults and cannot be disabled.
      - Found text isn't updating the selection on the page like QtWebKit
        did, but triggers a separate state not available. A find count and
        current index could be exposed, but isn't in this case to keep the
        API delta lower.
      
      This also adds the possibility to pass bool results through the
      CallbackDirectory and add a new tst_QWebEnginePage::findTextResult
      test since the old test relied on the selection to be updated when
      the searched text is found.
      
      Change-Id: I8189b5aea8d832df183c6c1ae03e3f08198a9c45
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      324706a5
    • Jocelyn Turcotte's avatar
      Implement QWebEnginePage::selectedText · 9cf0007b
      Jocelyn Turcotte authored
      
      Change-Id: Idebde8da0befbea7ccc5942de1e09fcc61ce16d4
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      9cf0007b
    • Jocelyn Turcotte's avatar
      Refactor the way callbacks are stored · 1f17c9b3
      Jocelyn Turcotte authored
      
      With the upcoming addition of a new type of callback result, this
      patch allows storing multiple callback types in the same QHash instead
      or requiring a different hash table just to please the type system.
      
      This does so by managing the ref-counted callback pointers directly
      instead of relying on a templated QExplicitlySharedDataPointer that
      requires a different type for each different callback pointer type.
      
      The ref-counting, construction and destruction is managed through
      a run-time type enum.
      
      Change-Id: I90ab2e1efc0c9703fc5b6ef57b38204ac8eea828
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      1f17c9b3
    • Jocelyn Turcotte's avatar
      Move the requestID argument before the result · 71edccab
      Jocelyn Turcotte authored
      
      This tries to get the order of declaration to be consistent.
      It also follows the order used by Chromium in some places
      where the routing_id usually comes first, then the request_id
      and then the result of the asynchronous request.
      
      Change-Id: I88e164dee67e1631161a222f7dd7a4679c3d3acd
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      71edccab
    • Jocelyn Turcotte's avatar
      Fix a warning in QWebEnginePage::setHtml · 0bb596fb
      Jocelyn Turcotte authored
      
      Change-Id: I87c18edb89658433d6dc3487ab92d2ff7bd6c986
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      0bb596fb
  21. Feb 12, 2014
  22. Jan 30, 2014
  23. Jan 22, 2014
    • Jocelyn Turcotte's avatar
      Clear callbacks with an empty value on page destruction · 6fb392ee
      Jocelyn Turcotte authored
      
      The current implementation offers no way to cancel async requests.
      This means that normal applications could easily allow callbacks
      to dereference a destroyed object unless they use a smart pointer
      within the callback function object.
      
      This patch will empty the pending callback list by calling each of
      them with an empty value. This will at least allow applications to
      cover the cases where the page is expected to have a shorter or equal
      lifetime than objects referenced in the callback.
      
      Change-Id: Ia9fc556b03f5d83f904a0ff4b05dc9e440ea488c
      Reviewed-by: default avatarPierre Rossi <pierre.rossi@gmail.com>
      6fb392ee
    • Jocelyn Turcotte's avatar
      Implement QWebEnginePage::toHtml and toPlainText · 1fcd7970
      Jocelyn Turcotte authored
      
      Those methods are now made asynchronous and need to be given a
      callback to handle the result.
      
      Update the code in the browser and fancybrowser examples using
      std::bind when using C++11 or tr1::bind with C++03 (which should be
      available with compilers on platforms that we support).
      
      Add a (currently failing) earlyToHtml test to make sure that an empty
      page doesn't crash because of a possibly incomplete attachment of
      the QtRenderViewObserver.
      
      Change-Id: I3ab7cb6f25b91b584dd80df5e4e9ad1e3214348e
      Reviewed-by: default avatarPierre Rossi <pierre.rossi@gmail.com>
      1fcd7970