Diff
Modified: trunk/Source/WebCore/ChangeLog (115764 => 115765)
--- trunk/Source/WebCore/ChangeLog 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebCore/ChangeLog 2012-05-02 00:17:06 UTC (rev 115765)
@@ -1,3 +1,26 @@
+2012-05-01 Jeffrey Pfau <jp...@apple.com>
+
+ <rdar://problem/10422318> Support for web content filter delegate for filtering https content
+ https://bugs.webkit.org/show_bug.cgi?id=85300
+
+ Reviewed by Alexey Proskuryakov.
+
+ No new tests.
+
+ * WebCore.exp.in:
+ * loader/MainResourceLoader.cpp:
+ (WebCore::MainResourceLoader::MainResourceLoader):
+ (WebCore::MainResourceLoader::~MainResourceLoader):
+ (WebCore::MainResourceLoader::didCancel):
+ (WebCore::MainResourceLoader::didReceiveResponse):
+ (WebCore::MainResourceLoader::didReceiveData):
+ (WebCore::MainResourceLoader::didFinishLoading):
+ (WebCore::MainResourceLoader::didFail):
+ * loader/MainResourceLoader.h:
+ (MainResourceLoader):
+ * platform/mac/WebCoreSystemInterface.h:
+ * platform/mac/WebCoreSystemInterface.mm:
+
2012-05-01 Kent Tamura <tk...@chromium.org>
Calendar Picker: Add capability to add platform-specific style sheet
Modified: trunk/Source/WebCore/WebCore.exp.in (115764 => 115765)
--- trunk/Source/WebCore/WebCore.exp.in 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebCore/WebCore.exp.in 2012-05-02 00:17:06 UTC (rev 115765)
@@ -1679,6 +1679,15 @@
_wkGetBytesFromAXTextMarker
_wkCreateAXUIElementRef
+#if !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+_wkFilterIsManagedSession
+_wkFilterCreateInstance
+_wkFilterRelease
+_wkFilterWasBlocked
+_wkFilterAddData
+_wkFilterDataComplete
+#endif
+
#if ENABLE(SVG)
__ZN7WebCore14SVGSMILElement13isSMILElementEPNS_4NodeE
__ZN7WebCore8Document13svgExtensionsEv
Modified: trunk/Source/WebCore/loader/MainResourceLoader.cpp (115764 => 115765)
--- trunk/Source/WebCore/loader/MainResourceLoader.cpp 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebCore/loader/MainResourceLoader.cpp 2012-05-02 00:17:06 UTC (rev 115765)
@@ -57,6 +57,10 @@
#include "PluginDatabase.h"
#endif
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+#include "WebCoreSystemInterface.h"
+#endif
+
// FIXME: More that is in common with SubresourceLoader should move up into ResourceLoader.
namespace WebCore {
@@ -72,11 +76,17 @@
, m_loadingMultipartContent(false)
, m_waitingForContentPolicy(false)
, m_timeOfLastDataReceived(0.0)
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ , m_filter(0)
+#endif
{
}
MainResourceLoader::~MainResourceLoader()
{
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ ASSERT(!m_filter);
+#endif
}
PassRefPtr<MainResourceLoader> MainResourceLoader::create(Frame* frame)
@@ -123,6 +133,13 @@
// We should notify the frame loader after fully canceling the load, because it can do complicated work
// like calling DOMWindow::print(), during which a half-canceled load could try to finish.
documentLoader()->mainReceivedError(error);
+
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ if (m_filter) {
+ wkFilterRelease(m_filter);
+ m_filter = 0;
+ }
+#endif
}
ResourceError MainResourceLoader::interruptedForPolicyChangeError() const
@@ -424,6 +441,11 @@
}
#endif
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ if (r.url().protocolIs("https") && wkFilterIsManagedSession())
+ m_filter = wkFilterCreateInstance(r.nsURLResponse());
+#endif
+
frameLoader()->policyChecker()->checkContentPolicy(m_response, callContinueAfterContentPolicy, this);
}
@@ -449,6 +471,22 @@
ASSERT(!defersLoading());
#endif
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ if (m_filter) {
+ ASSERT(!wkFilterWasBlocked(m_filter));
+ const char* blockedData = wkFilterAddData(m_filter, data, &length);
+ // If we don't have blockedData, that means we're still accumulating data
+ if (!blockedData) {
+ // Transition to committed state.
+ ResourceLoader::didReceiveData("", 0, 0, false);
+ return;
+ }
+
+ data = ""
+ encodedDataLength = -1;
+ }
+#endif
+
documentLoader()->applicationCacheHost()->mainResourceDataReceived(data, length, encodedDataLength, allAtOnce);
// The additional processing can do anything including possibly removing the last
@@ -458,6 +496,19 @@
m_timeOfLastDataReceived = monotonicallyIncreasingTime();
ResourceLoader::didReceiveData(data, length, encodedDataLength, allAtOnce);
+
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ if (WebFilterEvaluator *filter = m_filter) {
+ // If we got here, it means we know if we were blocked or not. If we were blocked, we're
+ // done loading the page altogether. Either way, we don't need the filter anymore.
+
+ // Remove this->m_filter early so didFinishLoading doesn't see it.
+ m_filter = 0;
+ if (wkFilterWasBlocked(filter))
+ cancel();
+ wkFilterRelease(filter);
+ }
+#endif
}
void MainResourceLoader::didFinishLoading(double finishTime)
@@ -473,6 +524,19 @@
RefPtr<MainResourceLoader> protect(this);
RefPtr<DocumentLoader> dl = documentLoader();
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ if (m_filter) {
+ int length;
+ const char* data = "" &length);
+ WebFilterEvaluator *filter = m_filter;
+ // Remove this->m_filter early so didReceiveData doesn't see it.
+ m_filter = 0;
+ if (data)
+ didReceiveData(data, length, -1, false);
+ wkFilterRelease(filter);
+ }
+#endif
+
if (m_loadingMultipartContent)
dl->maybeFinishLoadingMultipartContent();
@@ -485,6 +549,13 @@
void MainResourceLoader::didFail(const ResourceError& error)
{
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ if (m_filter) {
+ wkFilterRelease(m_filter);
+ m_filter = 0;
+ }
+#endif
+
if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForMainError(request(), error))
return;
Modified: trunk/Source/WebCore/loader/MainResourceLoader.h (115764 => 115765)
--- trunk/Source/WebCore/loader/MainResourceLoader.h 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebCore/loader/MainResourceLoader.h 2012-05-02 00:17:06 UTC (rev 115765)
@@ -34,6 +34,10 @@
#include "SubstituteData.h"
#include <wtf/Forward.h>
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+OBJC_CLASS WebFilterEvaluator;
+#endif
+
#if HAVE(RUNLOOP_TIMER)
#include "RunLoopTimer.h"
#else
@@ -109,6 +113,10 @@
bool m_loadingMultipartContent;
bool m_waitingForContentPolicy;
double m_timeOfLastDataReceived;
+
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ WebFilterEvaluator *m_filter;
+#endif
};
}
Modified: trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h (115764 => 115765)
--- trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.h 2012-05-02 00:17:06 UTC (rev 115765)
@@ -102,6 +102,7 @@
OBJC_CLASS NSWindow;
OBJC_CLASS QTMovie;
OBJC_CLASS QTMovieView;
+OBJC_CLASS WebFilterEvaluator;
extern "C" {
@@ -311,6 +312,15 @@
extern void (*wkCGPathAddRoundedRect)(CGMutablePathRef path, const CGAffineTransform* matrix, CGRect rect, CGFloat cornerWidth, CGFloat cornerHeight);
#endif
+#if !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+extern BOOL (*wkFilterIsManagedSession)(void);
+extern WebFilterEvaluator *(*wkFilterCreateInstance)(NSURLResponse *);
+extern void (*wkFilterRelease)(WebFilterEvaluator *);
+extern BOOL (*wkFilterWasBlocked)(WebFilterEvaluator *);
+extern const char* (*wkFilterAddData)(WebFilterEvaluator *, const char* data, int* length);
+extern const char* (*wkFilterDataComplete)(WebFilterEvaluator *, int* length);
+#endif
+
}
#endif
Modified: trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm (115764 => 115765)
--- trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebCore/platform/mac/WebCoreSystemInterface.mm 2012-05-02 00:17:06 UTC (rev 115765)
@@ -190,3 +190,12 @@
#if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
void (*wkCGPathAddRoundedRect)(CGMutablePathRef path, const CGAffineTransform* matrix, CGRect rect, CGFloat cornerWidth, CGFloat cornerHeight);
#endif
+
+#if !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+BOOL (*wkFilterIsManagedSession)(void);
+WebFilterEvaluator *(*wkFilterCreateInstance)(NSURLResponse *);
+void (*wkFilterRelease)(WebFilterEvaluator *);
+BOOL (*wkFilterWasBlocked)(WebFilterEvaluator *);
+const char* (*wkFilterAddData)(WebFilterEvaluator *, const char* data, int* length);
+const char* (*wkFilterDataComplete)(WebFilterEvaluator *, int* length);
+#endif
Modified: trunk/Source/WebKit/mac/ChangeLog (115764 => 115765)
--- trunk/Source/WebKit/mac/ChangeLog 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebKit/mac/ChangeLog 2012-05-02 00:17:06 UTC (rev 115765)
@@ -1,3 +1,13 @@
+2012-05-01 Jeffrey Pfau <jp...@apple.com>
+
+ <rdar://problem/10422318> Support for web content filter delegate for filtering https content
+ https://bugs.webkit.org/show_bug.cgi?id=85300
+
+ Reviewed by Alexey Proskuryakov.
+
+ * WebCoreSupport/WebSystemInterface.mm:
+ (InitWebCoreSystemInterface):
+
2012-05-01 Ryosuke Niwa <rn...@webkit.org>
*Command.h files shouldn't be exported to WebKit layer
Modified: trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm (115764 => 115765)
--- trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebKit/mac/WebCoreSupport/WebSystemInterface.mm 2012-05-02 00:17:06 UTC (rev 115765)
@@ -184,5 +184,13 @@
INIT(CGPathAddRoundedRect);
#endif
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ INIT(FilterIsManagedSession);
+ INIT(FilterCreateInstance);
+ INIT(FilterRelease);
+ INIT(FilterWasBlocked);
+ INIT(FilterAddData);
+ INIT(FilterDataComplete);
+#endif
didInit = true;
}
Modified: trunk/Source/WebKit2/ChangeLog (115764 => 115765)
--- trunk/Source/WebKit2/ChangeLog 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebKit2/ChangeLog 2012-05-02 00:17:06 UTC (rev 115765)
@@ -1,3 +1,13 @@
+2012-05-01 Jeffrey Pfau <jp...@apple.com>
+
+ <rdar://problem/10422318> Support for web content filter delegate for filtering https content
+ https://bugs.webkit.org/show_bug.cgi?id=85300
+
+ Reviewed by Alexey Proskuryakov.
+
+ * WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
+ (InitWebCoreSystemInterface):
+
2012-05-01 Ryosuke Niwa <rn...@webkit.org>
*Command.h files shouldn't be exported to WebKit layer
Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm (115764 => 115765)
--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm 2012-05-02 00:12:49 UTC (rev 115764)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/mac/WebSystemInterface.mm 2012-05-02 00:17:06 UTC (rev 115765)
@@ -171,5 +171,14 @@
INIT(CGPathAddRoundedRect);
#endif
+#if PLATFORM(MAC) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION) && !PLATFORM(IOS)
+ INIT(FilterIsManagedSession);
+ INIT(FilterCreateInstance);
+ INIT(FilterRelease);
+ INIT(FilterWasBlocked);
+ INIT(FilterAddData);
+ INIT(FilterDataComplete);
+#endif
+
});
}