Title: [120861] trunk/Source/WebKit/blackberry
Revision
120861
Author
[email protected]
Date
2012-06-20 14:15:18 -0700 (Wed, 20 Jun 2012)

Log Message

[BlackBerry] Add an API to immediately enable cross-site XHR
https://bugs.webkit.org/show_bug.cgi?id=89594

Internally Reviewed by Yong Li.
Patch by Christopher Hutten-Czapski <[email protected]> on 2012-06-20
Reviewed by Rob Buis.

There is no API to disable it as clients may rely on legacy behaviour
of not disabling until the next frame load.

* Api/WebPage.cpp:
(BlackBerry::WebKit::enableCrossSiteXHRRecursively):
(WebKit):
(BlackBerry::WebKit::WebPagePrivate::enableCrossSiteXHR):
(BlackBerry::WebKit::WebPage::enableCrossSiteXHR):
* Api/WebPage.h:
* Api/WebPage_p.h:
(WebPagePrivate):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (120860 => 120861)


--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2012-06-20 21:07:33 UTC (rev 120860)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2012-06-20 21:15:18 UTC (rev 120861)
@@ -889,6 +889,29 @@
     d->prepareToDestroy();
 }
 
+static void enableCrossSiteXHRRecursively(Frame* frame)
+{
+    frame->document()->securityOrigin()->grantUniversalAccess();
+
+    Vector<RefPtr<Frame>, 10> childFrames;
+    for (RefPtr<Frame> childFrame = frame->tree()->firstChild(); childFrame; childFrame = childFrame->tree()->nextSibling())
+        childFrames.append(childFrame);
+
+    unsigned size = childFrames.size();
+    for (unsigned i = 0; i < size; i++)
+        enableCrossSiteXHRRecursively(childFrames[i].get());
+}
+
+void WebPagePrivate::enableCrossSiteXHR()
+{
+    enableCrossSiteXHRRecursively(m_mainFrame);
+}
+
+void WebPage::enableCrossSiteXHR()
+{
+    d->enableCrossSiteXHR();
+}
+
 void WebPagePrivate::setLoadState(LoadState state)
 {
     if (m_loadState == state)

Modified: trunk/Source/WebKit/blackberry/Api/WebPage.h (120860 => 120861)


--- trunk/Source/WebKit/blackberry/Api/WebPage.h	2012-06-20 21:07:33 UTC (rev 120860)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.h	2012-06-20 21:15:18 UTC (rev 120861)
@@ -110,6 +110,8 @@
     // This will force any unload handlers to run.
     void prepareToDestroy();
 
+    void enableCrossSiteXHR();
+
     void reload();
     void reloadFromCache();
 

Modified: trunk/Source/WebKit/blackberry/Api/WebPage_p.h (120860 => 120861)


--- trunk/Source/WebKit/blackberry/Api/WebPage_p.h	2012-06-20 21:07:33 UTC (rev 120860)
+++ trunk/Source/WebKit/blackberry/Api/WebPage_p.h	2012-06-20 21:15:18 UTC (rev 120861)
@@ -104,6 +104,8 @@
     void stopCurrentLoad();
     void prepareToDestroy();
 
+    void enableCrossSiteXHR();
+
     LoadState loadState() const { return m_loadState; }
     bool isLoading() const { return m_loadState == WebPagePrivate::Provisional || m_loadState == WebPagePrivate::Committed; }
 

Modified: trunk/Source/WebKit/blackberry/ChangeLog (120860 => 120861)


--- trunk/Source/WebKit/blackberry/ChangeLog	2012-06-20 21:07:33 UTC (rev 120860)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2012-06-20 21:15:18 UTC (rev 120861)
@@ -1,3 +1,23 @@
+2012-06-20  Christopher Hutten-Czapski  <[email protected]>
+
+        [BlackBerry] Add an API to immediately enable cross-site XHR
+        https://bugs.webkit.org/show_bug.cgi?id=89594
+
+        Internally Reviewed by Yong Li.
+        Reviewed by Rob Buis.
+
+        There is no API to disable it as clients may rely on legacy behaviour
+        of not disabling until the next frame load.
+
+        * Api/WebPage.cpp:
+        (BlackBerry::WebKit::enableCrossSiteXHRRecursively):
+        (WebKit):
+        (BlackBerry::WebKit::WebPagePrivate::enableCrossSiteXHR):
+        (BlackBerry::WebKit::WebPage::enableCrossSiteXHR):
+        * Api/WebPage.h:
+        * Api/WebPage_p.h:
+        (WebPagePrivate):
+
 2012-06-20  Konrad Piascik  <[email protected]>
 
         [BlackBerry] Enable setAcceleratedCompositingForFixedPositionEnabled
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to