parent
9e8196c998
commit
243289cb0d
|
|
@ -1 +1 @@
|
||||||
1053
|
1054
|
||||||
|
|
|
||||||
|
|
@ -772,7 +772,7 @@ index 0000000000000000000000000000000000000000..34909cce9f6d8d7c74be4c96e40f80ca
|
||||||
+ ]
|
+ ]
|
||||||
+}
|
+}
|
||||||
diff --git a/Source/JavaScriptCore/inspector/protocol/Network.json b/Source/JavaScriptCore/inspector/protocol/Network.json
|
diff --git a/Source/JavaScriptCore/inspector/protocol/Network.json b/Source/JavaScriptCore/inspector/protocol/Network.json
|
||||||
index 658f14f8af68073b99a01dd7332628223b67fcd7..20303ab38deb601cb7b8120803d896863dfbfbd4 100644
|
index 658f14f8af68073b99a01dd7332628223b67fcd7..a8558f5093cedcec7884c6acc03b8bc3dc407163 100644
|
||||||
--- a/Source/JavaScriptCore/inspector/protocol/Network.json
|
--- a/Source/JavaScriptCore/inspector/protocol/Network.json
|
||||||
+++ b/Source/JavaScriptCore/inspector/protocol/Network.json
|
+++ b/Source/JavaScriptCore/inspector/protocol/Network.json
|
||||||
@@ -258,7 +258,16 @@
|
@@ -258,7 +258,16 @@
|
||||||
|
|
@ -793,7 +793,7 @@ index 658f14f8af68073b99a01dd7332628223b67fcd7..20303ab38deb601cb7b8120803d89686
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -266,8 +275,8 @@
|
@@ -266,13 +275,20 @@
|
||||||
"description": "Provide response content for an intercepted response.",
|
"description": "Provide response content for an intercepted response.",
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{ "name": "requestId", "$ref": "RequestId", "description": "Identifier for the intercepted Network response to modify." },
|
{ "name": "requestId", "$ref": "RequestId", "description": "Identifier for the intercepted Network response to modify." },
|
||||||
|
|
@ -804,7 +804,19 @@ index 658f14f8af68073b99a01dd7332628223b67fcd7..20303ab38deb601cb7b8120803d89686
|
||||||
{ "name": "mimeType", "type": "string", "optional": true, "description": "MIME Type for the data." },
|
{ "name": "mimeType", "type": "string", "optional": true, "description": "MIME Type for the data." },
|
||||||
{ "name": "status", "type": "integer", "optional": true, "description": "HTTP response status code. Pass through original values if unmodified." },
|
{ "name": "status", "type": "integer", "optional": true, "description": "HTTP response status code. Pass through original values if unmodified." },
|
||||||
{ "name": "statusText", "type": "string", "optional": true, "description": "HTTP response status text. Pass through original values if unmodified." },
|
{ "name": "statusText", "type": "string", "optional": true, "description": "HTTP response status text. Pass through original values if unmodified." },
|
||||||
@@ -356,6 +365,14 @@
|
{ "name": "headers", "$ref": "Headers", "optional": true, "description": "HTTP response headers. Pass through original values if unmodified." }
|
||||||
|
]
|
||||||
|
+ },
|
||||||
|
+ {
|
||||||
|
+ "name": "setEmulateOfflineState",
|
||||||
|
+ "description": "Emulate offline state overriding the actual state.",
|
||||||
|
+ "parameters": [
|
||||||
|
+ { "name": "offline", "type": "boolean", "description": "True to emulate offline." }
|
||||||
|
+ ]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"events": [
|
||||||
|
@@ -356,6 +372,14 @@
|
||||||
{ "name": "response", "$ref": "Response", "description": "Original response content that would proceed if this is continued." }
|
{ "name": "response", "$ref": "Response", "description": "Original response content that would proceed if this is continued." }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -1850,10 +1862,18 @@ index b578660fbb3ce176e4e0aeb5a22021dc880e47f0..a7c968bc9f88c7d26e1887bb53106b4a
|
||||||
class Page;
|
class Page;
|
||||||
class SecurityOrigin;
|
class SecurityOrigin;
|
||||||
diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
|
diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
|
||||||
index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1ef74f48c4 100644
|
index ca8f169d18a697a4dea405c933398e67feef01c6..25ec31140dd0f163f6e815428c0e4673c8d9b49c 100644
|
||||||
--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
|
--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
|
||||||
+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
|
+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
|
||||||
@@ -99,6 +99,11 @@ using namespace Inspector;
|
@@ -56,6 +56,7 @@
|
||||||
|
#include "MIMETypeRegistry.h"
|
||||||
|
#include "MemoryCache.h"
|
||||||
|
#include "NetworkResourcesData.h"
|
||||||
|
+#include "NetworkStateNotifier.h"
|
||||||
|
#include "Page.h"
|
||||||
|
#include "PlatformStrategies.h"
|
||||||
|
#include "ProgressTracker.h"
|
||||||
|
@@ -99,6 +100,11 @@ using namespace Inspector;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
|
@ -1865,7 +1885,7 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
class InspectorThreadableLoaderClient final : public ThreadableLoaderClient {
|
class InspectorThreadableLoaderClient final : public ThreadableLoaderClient {
|
||||||
WTF_MAKE_NONCOPYABLE(InspectorThreadableLoaderClient);
|
WTF_MAKE_NONCOPYABLE(InspectorThreadableLoaderClient);
|
||||||
public:
|
public:
|
||||||
@@ -437,6 +442,13 @@ void InspectorNetworkAgent::willSendRequest(unsigned long identifier, DocumentLo
|
@@ -437,6 +443,13 @@ void InspectorNetworkAgent::willSendRequest(unsigned long identifier, DocumentLo
|
||||||
for (auto& entry : m_extraRequestHeaders)
|
for (auto& entry : m_extraRequestHeaders)
|
||||||
request.setHTTPHeaderField(entry.key, entry.value);
|
request.setHTTPHeaderField(entry.key, entry.value);
|
||||||
|
|
||||||
|
|
@ -1879,7 +1899,7 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
auto protocolResourceType = InspectorPageAgent::resourceTypeJSON(type);
|
auto protocolResourceType = InspectorPageAgent::resourceTypeJSON(type);
|
||||||
|
|
||||||
Document* document = loader && loader->frame() ? loader->frame()->document() : nullptr;
|
Document* document = loader && loader->frame() ? loader->frame()->document() : nullptr;
|
||||||
@@ -1109,19 +1121,117 @@ void InspectorNetworkAgent::interceptResponse(const ResourceResponse& response,
|
@@ -1109,19 +1122,117 @@ void InspectorNetworkAgent::interceptResponse(const ResourceResponse& response,
|
||||||
m_frontendDispatcher->responseIntercepted(requestId, buildObjectForResourceResponse(response, nullptr));
|
m_frontendDispatcher->responseIntercepted(requestId, buildObjectForResourceResponse(response, nullptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1926,14 +1946,16 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
- errorString = "Missing pending intercept response for given requestId"_s;
|
- errorString = "Missing pending intercept response for given requestId"_s;
|
||||||
+ if (pendingInterceptResponse) {
|
+ if (pendingInterceptResponse) {
|
||||||
+ pendingInterceptResponse->respondWithOriginalResponse();
|
+ pendingInterceptResponse->respondWithOriginalResponse();
|
||||||
+ return;
|
return;
|
||||||
+ }
|
}
|
||||||
+
|
|
||||||
|
- pendingInterceptResponse->respondWithOriginalResponse();
|
||||||
+ errorString = "Missing pending intercept response for given requestId"_s;
|
+ errorString = "Missing pending intercept response for given requestId"_s;
|
||||||
+}
|
}
|
||||||
+
|
|
||||||
|
-void InspectorNetworkAgent::interceptWithResponse(ErrorString& errorString, const String& requestId, const String& content, bool base64Encoded, const String* mimeType, const int* status, const String* statusText, const JSON::Object* headers)
|
||||||
+void InspectorNetworkAgent::interceptAsError(ErrorString& errorString, const String& requestId, const String& reason)
|
+void InspectorNetworkAgent::interceptAsError(ErrorString& errorString, const String& requestId, const String& reason)
|
||||||
+{
|
{
|
||||||
+ auto pendingRequest = m_pendingInterceptRequests.take(requestId);
|
+ auto pendingRequest = m_pendingInterceptRequests.take(requestId);
|
||||||
+ if (pendingRequest) {
|
+ if (pendingRequest) {
|
||||||
+ ResourceLoader* loader = pendingRequest->m_loader.get();
|
+ ResourceLoader* loader = pendingRequest->m_loader.get();
|
||||||
|
|
@ -1950,16 +1972,14 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
+ error = ResourceError(errorDomainWebKitInternal, 0, loader->url(), "Request timed out"_s, ResourceError::Type::Timeout);
|
+ error = ResourceError(errorDomainWebKitInternal, 0, loader->url(), "Request timed out"_s, ResourceError::Type::Timeout);
|
||||||
+ loader->didFail(error);
|
+ loader->didFail(error);
|
||||||
+ pendingRequest->m_callback(true);
|
+ pendingRequest->m_callback(true);
|
||||||
return;
|
+ return;
|
||||||
}
|
+ }
|
||||||
|
+
|
||||||
- pendingInterceptResponse->respondWithOriginalResponse();
|
|
||||||
+ errorString = "Missing pending intercept response for given requestId"_s;
|
+ errorString = "Missing pending intercept response for given requestId"_s;
|
||||||
}
|
+}
|
||||||
|
+
|
||||||
-void InspectorNetworkAgent::interceptWithResponse(ErrorString& errorString, const String& requestId, const String& content, bool base64Encoded, const String* mimeType, const int* status, const String* statusText, const JSON::Object* headers)
|
|
||||||
+void InspectorNetworkAgent::interceptWithResponse(ErrorString& errorString, const String& requestId, const String* content, const bool* base64Encoded, const String* mimeType, const int* status, const String* statusText, const JSON::Object* headers)
|
+void InspectorNetworkAgent::interceptWithResponse(ErrorString& errorString, const String& requestId, const String* content, const bool* base64Encoded, const String* mimeType, const int* status, const String* statusText, const JSON::Object* headers)
|
||||||
{
|
+{
|
||||||
+ auto pendingRequest = m_pendingInterceptRequests.take(requestId);
|
+ auto pendingRequest = m_pendingInterceptRequests.take(requestId);
|
||||||
+ if (pendingRequest && status && statusText && mimeType && headers) {
|
+ if (pendingRequest && status && statusText && mimeType && headers) {
|
||||||
+ RefPtr<ResourceLoader> loader = pendingRequest->m_loader.get();
|
+ RefPtr<ResourceLoader> loader = pendingRequest->m_loader.get();
|
||||||
|
|
@ -2003,7 +2023,7 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
auto pendingInterceptResponse = m_pendingInterceptResponses.take(requestId);
|
auto pendingInterceptResponse = m_pendingInterceptResponses.take(requestId);
|
||||||
if (!pendingInterceptResponse) {
|
if (!pendingInterceptResponse) {
|
||||||
errorString = "Missing pending intercept response for given requestId"_s;
|
errorString = "Missing pending intercept response for given requestId"_s;
|
||||||
@@ -1149,16 +1259,17 @@ void InspectorNetworkAgent::interceptWithResponse(ErrorString& errorString, cons
|
@@ -1149,20 +1260,26 @@ void InspectorNetworkAgent::interceptWithResponse(ErrorString& errorString, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<SharedBuffer> overrideData;
|
RefPtr<SharedBuffer> overrideData;
|
||||||
|
|
@ -2025,7 +2045,16 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
|
|
||||||
pendingInterceptResponse->respond(overrideResponse, overrideData);
|
pendingInterceptResponse->respond(overrideResponse, overrideData);
|
||||||
}
|
}
|
||||||
@@ -1292,6 +1403,11 @@ void InspectorNetworkAgent::searchInRequest(ErrorString& errorString, const Stri
|
|
||||||
|
+void InspectorNetworkAgent::setEmulateOfflineState(ErrorString&, bool offline)
|
||||||
|
+{
|
||||||
|
+ platformStrategies()->loaderStrategy()->setEmulateOfflineState(offline);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
bool InspectorNetworkAgent::shouldTreatAsText(const String& mimeType)
|
||||||
|
{
|
||||||
|
return startsWithLettersIgnoringASCIICase(mimeType, "text/")
|
||||||
|
@@ -1292,6 +1409,11 @@ void InspectorNetworkAgent::searchInRequest(ErrorString& errorString, const Stri
|
||||||
results = ContentSearchUtilities::searchInTextByLines(resourceData->content(), query, caseSensitive, isRegex);
|
results = ContentSearchUtilities::searchInTextByLines(resourceData->content(), query, caseSensitive, isRegex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2038,10 +2067,10 @@ index ca8f169d18a697a4dea405c933398e67feef01c6..2a6e57a9e5a781c41b45115d977acc1e
|
||||||
{
|
{
|
||||||
m_resourcesData->clear(loaderIdentifier(&loader));
|
m_resourcesData->clear(loaderIdentifier(&loader));
|
||||||
diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.h b/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
|
diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.h b/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
|
||||||
index a68f84520736977c8b9216616c5a178fbf5275d6..1a69942522052106bf44148b07d39d65964818d1 100644
|
index a68f84520736977c8b9216616c5a178fbf5275d6..c36811c04d95c78b7747e6e625bf79ea33cfa0d9 100644
|
||||||
--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
|
--- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
|
||||||
+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
|
+++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
|
||||||
@@ -90,8 +90,9 @@ public:
|
@@ -90,8 +90,10 @@ public:
|
||||||
void setInterceptionEnabled(ErrorString&, bool enabled) final;
|
void setInterceptionEnabled(ErrorString&, bool enabled) final;
|
||||||
void addInterception(ErrorString&, const String& url, const bool* caseSensitive, const bool* isRegex, const String* networkStageString) final;
|
void addInterception(ErrorString&, const String& url, const bool* caseSensitive, const bool* isRegex, const String* networkStageString) final;
|
||||||
void removeInterception(ErrorString&, const String& url, const bool* caseSensitive, const bool* isRegex, const String* networkStageString) final;
|
void removeInterception(ErrorString&, const String& url, const bool* caseSensitive, const bool* isRegex, const String* networkStageString) final;
|
||||||
|
|
@ -2050,10 +2079,11 @@ index a68f84520736977c8b9216616c5a178fbf5275d6..1a69942522052106bf44148b07d39d65
|
||||||
+ void interceptContinue(ErrorString&, const String& requestId, const JSON::Object* headers) final;
|
+ void interceptContinue(ErrorString&, const String& requestId, const JSON::Object* headers) final;
|
||||||
+ void interceptAsError(ErrorString&, const String& requestId, const String& reason) final;
|
+ void interceptAsError(ErrorString&, const String& requestId, const String& reason) final;
|
||||||
+ void interceptWithResponse(ErrorString&, const String& requestId, const String* content, const bool* base64Encoded, const String* mimeType, const int* status, const String* statusText, const JSON::Object* headers) final;
|
+ void interceptWithResponse(ErrorString&, const String& requestId, const String* content, const bool* base64Encoded, const String* mimeType, const int* status, const String* statusText, const JSON::Object* headers) final;
|
||||||
|
+ void setEmulateOfflineState(ErrorString&, bool offline) final;
|
||||||
|
|
||||||
// InspectorInstrumentation
|
// InspectorInstrumentation
|
||||||
void willRecalculateStyle();
|
void willRecalculateStyle();
|
||||||
@@ -121,10 +122,13 @@ public:
|
@@ -121,10 +123,13 @@ public:
|
||||||
bool willInterceptRequest(const ResourceRequest&);
|
bool willInterceptRequest(const ResourceRequest&);
|
||||||
bool shouldInterceptResponse(const ResourceResponse&);
|
bool shouldInterceptResponse(const ResourceResponse&);
|
||||||
void interceptResponse(const ResourceResponse&, unsigned long identifier, CompletionHandler<void(const ResourceResponse&, RefPtr<SharedBuffer>)>&&);
|
void interceptResponse(const ResourceResponse&, unsigned long identifier, CompletionHandler<void(const ResourceResponse&, RefPtr<SharedBuffer>)>&&);
|
||||||
|
|
@ -2067,7 +2097,7 @@ index a68f84520736977c8b9216616c5a178fbf5275d6..1a69942522052106bf44148b07d39d65
|
||||||
protected:
|
protected:
|
||||||
InspectorNetworkAgent(WebAgentContext&);
|
InspectorNetworkAgent(WebAgentContext&);
|
||||||
|
|
||||||
@@ -191,6 +195,15 @@ private:
|
@@ -191,6 +196,15 @@ private:
|
||||||
bool m_responded { false };
|
bool m_responded { false };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -2083,7 +2113,7 @@ index a68f84520736977c8b9216616c5a178fbf5275d6..1a69942522052106bf44148b07d39d65
|
||||||
std::unique_ptr<Inspector::NetworkFrontendDispatcher> m_frontendDispatcher;
|
std::unique_ptr<Inspector::NetworkFrontendDispatcher> m_frontendDispatcher;
|
||||||
RefPtr<Inspector::NetworkBackendDispatcher> m_backendDispatcher;
|
RefPtr<Inspector::NetworkBackendDispatcher> m_backendDispatcher;
|
||||||
Inspector::InjectedScriptManager& m_injectedScriptManager;
|
Inspector::InjectedScriptManager& m_injectedScriptManager;
|
||||||
@@ -214,6 +227,7 @@ private:
|
@@ -214,6 +228,7 @@ private:
|
||||||
};
|
};
|
||||||
Vector<Intercept> m_intercepts;
|
Vector<Intercept> m_intercepts;
|
||||||
HashMap<String, std::unique_ptr<PendingInterceptResponse>> m_pendingInterceptResponses;
|
HashMap<String, std::unique_ptr<PendingInterceptResponse>> m_pendingInterceptResponses;
|
||||||
|
|
@ -3089,6 +3119,18 @@ index 5310d3586b9b5a9c4a925383ee2c796616724b8d..eb03b0483f006dae09ea003616ad5418
|
||||||
|
|
||||||
InspectorInstrumentation::didClearWindowObjectInWorld(m_frame, world);
|
InspectorInstrumentation::didClearWindowObjectInWorld(m_frame, world);
|
||||||
}
|
}
|
||||||
|
diff --git a/Source/WebCore/loader/LoaderStrategy.h b/Source/WebCore/loader/LoaderStrategy.h
|
||||||
|
index 0644fec509e60f7a4cf59a352f32335c2d164d99..acf628996ea020a8f0a2239ef72f5c241d108840 100644
|
||||||
|
--- a/Source/WebCore/loader/LoaderStrategy.h
|
||||||
|
+++ b/Source/WebCore/loader/LoaderStrategy.h
|
||||||
|
@@ -79,6 +79,7 @@ public:
|
||||||
|
|
||||||
|
virtual bool isOnLine() const = 0;
|
||||||
|
virtual void addOnlineStateChangeListener(WTF::Function<void(bool)>&&) = 0;
|
||||||
|
+ virtual void setEmulateOfflineState(bool) {};
|
||||||
|
|
||||||
|
virtual bool shouldPerformSecurityChecks() const { return false; }
|
||||||
|
virtual bool havePerformedSecurityChecks(const ResourceResponse&) const { return false; }
|
||||||
diff --git a/Source/WebCore/loader/ProgressTracker.cpp b/Source/WebCore/loader/ProgressTracker.cpp
|
diff --git a/Source/WebCore/loader/ProgressTracker.cpp b/Source/WebCore/loader/ProgressTracker.cpp
|
||||||
index e24fded2225f1c1918f454017566717e20484eab..30e4b7a986418c4b4f6c799b858b608206e22bb5 100644
|
index e24fded2225f1c1918f454017566717e20484eab..30e4b7a986418c4b4f6c799b858b608206e22bb5 100644
|
||||||
--- a/Source/WebCore/loader/ProgressTracker.cpp
|
--- a/Source/WebCore/loader/ProgressTracker.cpp
|
||||||
|
|
@ -3712,6 +3754,18 @@ index cf46da150838fb0ff79337b05e5ae533d8c291f2..efbda20f28b421d0f3f2b6d6ccd279fe
|
||||||
String PlatformKeyboardEvent::singleCharacterString(unsigned val)
|
String PlatformKeyboardEvent::singleCharacterString(unsigned val)
|
||||||
{
|
{
|
||||||
switch (val) {
|
switch (val) {
|
||||||
|
diff --git a/Source/WebCore/platform/network/NetworkStateNotifier.h b/Source/WebCore/platform/network/NetworkStateNotifier.h
|
||||||
|
index 87930048f4fd18d6098af7de4da25be532df5931..2bb2afcf9473b0d5d97efbe18dd7b8145bc5f932 100644
|
||||||
|
--- a/Source/WebCore/platform/network/NetworkStateNotifier.h
|
||||||
|
+++ b/Source/WebCore/platform/network/NetworkStateNotifier.h
|
||||||
|
@@ -72,6 +72,7 @@ private:
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Optional<bool> m_isOnLine;
|
||||||
|
+ Optional<bool> m_emulatedIsOnLine;
|
||||||
|
Vector<WTF::Function<void(bool)>> m_listeners;
|
||||||
|
Timer m_updateStateTimer;
|
||||||
|
|
||||||
diff --git a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
|
diff --git a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp b/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
|
||||||
index 3fb8892c79fd5e4f670cac4884f9ef0b5371b2a5..974cd5d8cc3772a1964897f5134ec7b055252ebc 100644
|
index 3fb8892c79fd5e4f670cac4884f9ef0b5371b2a5..974cd5d8cc3772a1964897f5134ec7b055252ebc 100644
|
||||||
--- a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
|
--- a/Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp
|
||||||
|
|
@ -8257,7 +8311,7 @@ index 1c5c6ca4bacba4b134d44af9200b0b1e8b4ca2b3..49bfaecf5c2f7cd704c7ef91952303e7
|
||||||
2D11B7562126A282006F8878 /* UnifiedSource3.cpp in Sources */,
|
2D11B7562126A282006F8878 /* UnifiedSource3.cpp in Sources */,
|
||||||
2D11B7552126A282006F8878 /* UnifiedSource3-mm.mm in Sources */,
|
2D11B7552126A282006F8878 /* UnifiedSource3-mm.mm in Sources */,
|
||||||
diff --git a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
|
diff --git a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
|
||||||
index d723cae3331551dff866171a859c641820a6376e..07c84938d2313d83715a27aea77a2c230e937e66 100644
|
index d723cae3331551dff866171a859c641820a6376e..522dec8bc563f903fc84df14c041c7f46872e81a 100644
|
||||||
--- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
|
--- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
|
||||||
+++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
|
+++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp
|
||||||
@@ -57,6 +57,7 @@
|
@@ -57,6 +57,7 @@
|
||||||
|
|
@ -8268,8 +8322,15 @@ index d723cae3331551dff866171a859c641820a6376e..07c84938d2313d83715a27aea77a2c23
|
||||||
#include <WebCore/NetscapePlugInStreamLoader.h>
|
#include <WebCore/NetscapePlugInStreamLoader.h>
|
||||||
#include <WebCore/NetworkLoadInformation.h>
|
#include <WebCore/NetworkLoadInformation.h>
|
||||||
#include <WebCore/PlatformStrategies.h>
|
#include <WebCore/PlatformStrategies.h>
|
||||||
@@ -216,6 +217,15 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou
|
@@ -214,8 +215,22 @@ void WebLoaderStrategy::scheduleLoad(ResourceLoader& resourceLoader, CachedResou
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ if (m_emulateOfflineState) {
|
||||||
|
+ scheduleInternallyFailedLoad(resourceLoader);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
if (!tryLoadingUsingURLSchemeHandler(resourceLoader)) {
|
if (!tryLoadingUsingURLSchemeHandler(resourceLoader)) {
|
||||||
RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be scheduled with the NetworkProcess (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
|
RELEASE_LOG_IF_ALLOWED("scheduleLoad: URL will be scheduled with the NetworkProcess (frame=%p, webPageID=%" PRIu64 ", frameID=%" PRIu64 ", resourceID=%" PRIu64 ")", resourceLoader.frame(), trackingParameters.pageID.toUInt64(), trackingParameters.frameID.toUInt64(), identifier);
|
||||||
+
|
+
|
||||||
|
|
@ -8284,6 +8345,60 @@ index d723cae3331551dff866171a859c641820a6376e..07c84938d2313d83715a27aea77a2c23
|
||||||
scheduleLoadFromNetworkProcess(resourceLoader, resourceLoader.request(), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
|
scheduleLoadFromNetworkProcess(resourceLoader, resourceLoader.request(), trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime(resource));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -699,7 +714,7 @@ void WebLoaderStrategy::didFinishPreconnection(uint64_t preconnectionIdentifier,
|
||||||
|
|
||||||
|
bool WebLoaderStrategy::isOnLine() const
|
||||||
|
{
|
||||||
|
- return m_isOnLine;
|
||||||
|
+ return m_emulateOfflineState ? false : m_isOnLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WebLoaderStrategy::addOnlineStateChangeListener(Function<void(bool)>&& listener)
|
||||||
|
@@ -710,6 +725,11 @@ void WebLoaderStrategy::addOnlineStateChangeListener(Function<void(bool)>&& list
|
||||||
|
|
||||||
|
void WebLoaderStrategy::setOnLineState(bool isOnLine)
|
||||||
|
{
|
||||||
|
+ if (m_emulateOfflineState) {
|
||||||
|
+ m_isOnLine = isOnLine;
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (m_isOnLine == isOnLine)
|
||||||
|
return;
|
||||||
|
|
||||||
|
@@ -718,6 +738,12 @@ void WebLoaderStrategy::setOnLineState(bool isOnLine)
|
||||||
|
listener(isOnLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void WebLoaderStrategy::setEmulateOfflineState(bool offline) {
|
||||||
|
+ m_emulateOfflineState = offline;
|
||||||
|
+ for (auto& listener : m_onlineStateChangeListeners)
|
||||||
|
+ listener(offline ? false : m_isOnLine);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void WebLoaderStrategy::setCaptureExtraNetworkLoadMetricsEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
WebProcess::singleton().ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::SetCaptureExtraNetworkLoadMetricsEnabled(enabled), 0);
|
||||||
|
diff --git a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h
|
||||||
|
index f4d5a3f80659ae77f97e613bd492ca4981ac98c5..7eecda77c64ce4f1547c9fb5d4ed3fa5de7d3a81 100644
|
||||||
|
--- a/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h
|
||||||
|
+++ b/Source/WebKit/WebProcess/Network/WebLoaderStrategy.h
|
||||||
|
@@ -87,6 +87,7 @@ public:
|
||||||
|
bool isOnLine() const final;
|
||||||
|
void addOnlineStateChangeListener(Function<void(bool)>&&) final;
|
||||||
|
void setOnLineState(bool);
|
||||||
|
+ void setEmulateOfflineState(bool) final;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void scheduleLoad(WebCore::ResourceLoader&, WebCore::CachedResource*, bool shouldClearReferrerOnHTTPSToHTTPRedirect);
|
||||||
|
@@ -125,6 +126,7 @@ private:
|
||||||
|
HashMap<unsigned long, PreconnectCompletionHandler> m_preconnectCompletionHandlers;
|
||||||
|
Vector<Function<void(bool)>> m_onlineStateChangeListeners;
|
||||||
|
bool m_isOnLine { true };
|
||||||
|
+ bool m_emulateOfflineState { false };
|
||||||
|
HashSet<WebResourceLoader*> m_loadersWithUploads;
|
||||||
|
};
|
||||||
|
|
||||||
diff --git a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp b/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
diff --git a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp b/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
||||||
index a70f6fd52096a5dca901ea70a3755f14d6b4a0fd..f02e5c774a49d3e67860adb3b011531313eaf8d1 100644
|
index a70f6fd52096a5dca901ea70a3755f14d6b4a0fd..f02e5c774a49d3e67860adb3b011531313eaf8d1 100644
|
||||||
--- a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
--- a/Source/WebKit/WebProcess/WebPage/WebPageInspectorTarget.cpp
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue