summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/PageLoadState.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/PageLoadState.h')
-rw-r--r--Source/WebKit2/UIProcess/PageLoadState.h76
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;