diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/PageLoadState.h')
-rw-r--r-- | Source/WebKit2/UIProcess/PageLoadState.h | 76 |
1 files changed, 55 insertions, 21 deletions
diff --git a/Source/WebKit2/UIProcess/PageLoadState.h b/Source/WebKit2/UIProcess/PageLoadState.h index 0501e4500..e2afdfd8d 100644 --- a/Source/WebKit2/UIProcess/PageLoadState.h +++ b/Source/WebKit2/UIProcess/PageLoadState.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013-2015 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,13 +26,17 @@ #ifndef PageLoadState_h #define PageLoadState_h +#include "WebCertificateInfo.h" #include <wtf/text/WTFString.h> namespace WebKit { +class WebCertificateInfo; +class WebPageProxy; + class PageLoadState { public: - PageLoadState(); + explicit PageLoadState(WebPageProxy&); ~PageLoadState(); enum class State { @@ -59,31 +63,33 @@ public: virtual void willChangeEstimatedProgress() = 0; virtual void didChangeEstimatedProgress() = 0; + + virtual void willChangeCanGoBack() = 0; + virtual void didChangeCanGoBack() = 0; + + virtual void willChangeCanGoForward() = 0; + virtual void didChangeCanGoForward() = 0; + + virtual void willChangeNetworkRequestsInProgress() = 0; + virtual void didChangeNetworkRequestsInProgress() = 0; + + virtual void willChangeCertificateInfo() = 0; + virtual void didChangeCertificateInfo() = 0; + + virtual void willChangeWebProcessIsResponsive() = 0; + virtual void didChangeWebProcessIsResponsive() = 0; }; class Transaction { WTF_MAKE_NONCOPYABLE(Transaction); public: - Transaction(Transaction&& other) - : m_pageLoadState(other.m_pageLoadState) - { - other.m_pageLoadState = nullptr; - } - - ~Transaction() - { - if (m_pageLoadState) - m_pageLoadState->endTransaction(); - } + Transaction(Transaction&&); + ~Transaction(); private: friend class PageLoadState; - explicit Transaction(PageLoadState& pageLoadState) - : m_pageLoadState(&pageLoadState) - { - m_pageLoadState->beginTransaction(); - } + explicit Transaction(PageLoadState&); class Token { public: @@ -100,6 +106,7 @@ public: #endif }; + RefPtr<WebPageProxy> m_webPageProxy; PageLoadState* m_pageLoadState; }; @@ -122,6 +129,9 @@ public: bool hasOnlySecureContent() const; double estimatedProgress() const; + bool networkRequestsInProgress() const { return m_committedState.networkRequestsInProgress; } + + WebCertificateInfo* certificateInfo() const { return m_committedState.certificateInfo.get(); } const String& pendingAPIRequestURL() const; void setPendingAPIRequestURL(const Transaction::Token&, const String&); @@ -131,7 +141,7 @@ public: void didReceiveServerRedirectForProvisionalLoad(const Transaction::Token&, const String& url); void didFailProvisionalLoad(const Transaction::Token&); - void didCommitLoad(const Transaction::Token&); + void didCommitLoad(const Transaction::Token&, WebCertificateInfo&, bool hasInsecureContent); void didFinishLoad(const Transaction::Token&); void didFailLoad(const Transaction::Token&); @@ -144,13 +154,25 @@ public: const String& title() const; void setTitle(const Transaction::Token&, const String&); + bool canGoBack() const; + void setCanGoBack(const Transaction::Token&, bool); + + bool canGoForward() const; + void setCanGoForward(const Transaction::Token&, bool); + void didStartProgress(const Transaction::Token&); void didChangeProgress(const Transaction::Token&, double); void didFinishProgress(const Transaction::Token&); + void setNetworkRequestsInProgress(const Transaction::Token&, bool); -private: - static bool isLoadingState(State); + bool committedHasInsecureContent() const { return m_committedState.hasInsecureContent; } + // FIXME: We piggy-back off PageLoadState::Observer so that both WKWebView and WKObservablePageState + // can listen for changes. Once we get rid of WKObservablePageState these could just be part of API::NavigationClient. + void willChangeProcessIsResponsive(); + void didChangeProcessIsResponsive(); + +private: void beginTransaction() { ++m_outstandingTransactionCount; } void endTransaction(); @@ -162,7 +184,10 @@ private: Data() : state(State::Finished) , hasInsecureContent(false) + , canGoBack(false) + , canGoForward(false) , estimatedProgress(0) + , networkRequestsInProgress(false) { } @@ -178,13 +203,22 @@ private: String title; + bool canGoBack; + bool canGoForward; + double estimatedProgress; + bool networkRequestsInProgress; + + RefPtr<WebCertificateInfo> certificateInfo; }; + static bool isLoading(const Data&); static String activeURL(const Data&); static bool hasOnlySecureContent(const Data&); static double estimatedProgress(const Data&); + WebPageProxy& m_webPageProxy; + Data m_committedState; Data m_uncommittedState; |