Changeset 192911 in webkit
- Timestamp:
- Dec 1, 2015, 2:09:49 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
-
Source/WebKit2/ChangeLog (modified) (1 diff)
-
Source/WebKit2/Shared/API/APIObject.h (modified) (1 diff)
-
Source/WebKit2/Shared/API/c/WKBase.h (modified) (1 diff)
-
Source/WebKit2/UIProcess/API/C/WKPage.cpp (modified) (3 diffs)
-
Source/WebKit2/UIProcess/API/C/WKPageUIClient.h (modified) (4 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/WebKitTestRunner/TestController.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r192910 r192911 1 2015-12-01 Sam Weinig <sam@webkit.org> 2 3 Need completionHandler-based WebKit C SPI for alert, confirm, and prompt 4 <rdar://problem/23320863> 5 https://bugs.webkit.org/show_bug.cgi?id=151708 6 7 Reviewed by Anders Carlsson. 8 9 Add listener based versions of alert, confirm and prompt. 10 11 * Shared/API/APIObject.h: 12 * Shared/API/c/WKBase.h: 13 * UIProcess/API/C/WKPage.cpp: 14 (WebKit::RunJavaScriptAlertResultListener::create): 15 (WebKit::RunJavaScriptAlertResultListener::~RunJavaScriptAlertResultListener): 16 (WebKit::RunJavaScriptAlertResultListener::call): 17 (WebKit::RunJavaScriptAlertResultListener::RunJavaScriptAlertResultListener): 18 (WebKit::RunJavaScriptConfirmResultListener::create): 19 (WebKit::RunJavaScriptConfirmResultListener::~RunJavaScriptConfirmResultListener): 20 (WebKit::RunJavaScriptConfirmResultListener::call): 21 (WebKit::RunJavaScriptConfirmResultListener::RunJavaScriptConfirmResultListener): 22 (WebKit::RunJavaScriptPromptResultListener::create): 23 (WebKit::RunJavaScriptPromptResultListener::~RunJavaScriptPromptResultListener): 24 (WebKit::RunJavaScriptPromptResultListener::call): 25 (WebKit::RunJavaScriptPromptResultListener::RunJavaScriptPromptResultListener): 26 (WKPageSetPageUIClient): 27 * UIProcess/API/C/WKPageUIClient.h: 28 1 29 2015-12-01 Anders Carlsson <andersca@apple.com> 2 30 -
trunk/Source/WebKit2/Shared/API/APIObject.h
r191545 r192911 139 139 PluginSiteDataManager, 140 140 Preferences, 141 RunJavaScriptAlertResultListener, 142 RunJavaScriptConfirmResultListener, 143 RunJavaScriptPromptResultListener, 141 144 Session, 142 145 TextChecker, -
trunk/Source/WebKit2/Shared/API/c/WKBase.h
r191856 r192911 132 132 typedef const struct OpaqueWKPreferences* WKPreferencesRef; 133 133 typedef const struct OpaqueWKProtectionSpace* WKProtectionSpaceRef; 134 typedef const struct OpaqueWKPageRunJavaScriptAlertResultListener* WKPageRunJavaScriptAlertResultListenerRef; 135 typedef const struct OpaqueWKPageRunJavaScriptConfirmResultListener* WKPageRunJavaScriptConfirmResultListenerRef; 136 typedef const struct OpaqueWKPageRunJavaScriptPromptResultListener* WKPageRunJavaScriptPromptResultListenerRef; 134 137 typedef const struct OpaqueWKTextChecker* WKTextCheckerRef; 135 138 typedef const struct OpaqueWKSession* WKSessionRef; -
trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp
r192113 r192911 1432 1432 1433 1433 // Version 4. 1434 WKPageRunJavaScriptAlertCallback runJavaScriptAlert;1435 WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm;1436 WKPageRunJavaScriptPromptCallback runJavaScriptPrompt;1434 WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5 runJavaScriptAlert; 1435 WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5 runJavaScriptConfirm; 1436 WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5 runJavaScriptPrompt; 1437 1437 }; 1438 1438 … … 1504 1504 #endif 1505 1505 1506 namespace WebKit { 1507 1508 class RunJavaScriptAlertResultListener : public API::ObjectImpl<API::Object::Type::RunJavaScriptAlertResultListener> { 1509 public: 1510 static PassRefPtr<RunJavaScriptAlertResultListener> create(std::function<void ()>&& completionHandler) 1511 { 1512 return adoptRef(new RunJavaScriptAlertResultListener(WTF::move(completionHandler))); 1513 } 1514 1515 virtual ~RunJavaScriptAlertResultListener() 1516 { 1517 } 1518 1519 void call() 1520 { 1521 m_completionHandler(); 1522 } 1523 1524 private: 1525 explicit RunJavaScriptAlertResultListener(std::function<void ()>&& completionHandler) 1526 : m_completionHandler(WTF::move(completionHandler)) 1527 { 1528 } 1529 1530 std::function<void ()> m_completionHandler; 1531 }; 1532 1533 class RunJavaScriptConfirmResultListener : public API::ObjectImpl<API::Object::Type::RunJavaScriptConfirmResultListener> { 1534 public: 1535 static PassRefPtr<RunJavaScriptConfirmResultListener> create(std::function<void (bool)>&& completionHandler) 1536 { 1537 return adoptRef(new RunJavaScriptConfirmResultListener(WTF::move(completionHandler))); 1538 } 1539 1540 virtual ~RunJavaScriptConfirmResultListener() 1541 { 1542 } 1543 1544 void call(bool result) 1545 { 1546 m_completionHandler(result); 1547 } 1548 1549 private: 1550 explicit RunJavaScriptConfirmResultListener(std::function<void (bool)>&& completionHandler) 1551 : m_completionHandler(WTF::move(completionHandler)) 1552 { 1553 } 1554 1555 std::function<void (bool)> m_completionHandler; 1556 }; 1557 1558 class RunJavaScriptPromptResultListener : public API::ObjectImpl<API::Object::Type::RunJavaScriptPromptResultListener> { 1559 public: 1560 static PassRefPtr<RunJavaScriptPromptResultListener> create(std::function<void (const String&)>&& completionHandler) 1561 { 1562 return adoptRef(new RunJavaScriptPromptResultListener(WTF::move(completionHandler))); 1563 } 1564 1565 virtual ~RunJavaScriptPromptResultListener() 1566 { 1567 } 1568 1569 void call(const String& result) 1570 { 1571 m_completionHandler(result); 1572 } 1573 1574 private: 1575 explicit RunJavaScriptPromptResultListener(std::function<void (const String&)>&& completionHandler) 1576 : m_completionHandler(WTF::move(completionHandler)) 1577 { 1578 } 1579 1580 std::function<void (const String&)> m_completionHandler; 1581 }; 1582 1583 WK_ADD_API_MAPPING(WKPageRunJavaScriptAlertResultListenerRef, RunJavaScriptAlertResultListener) 1584 WK_ADD_API_MAPPING(WKPageRunJavaScriptConfirmResultListenerRef, RunJavaScriptConfirmResultListener) 1585 WK_ADD_API_MAPPING(WKPageRunJavaScriptPromptResultListenerRef, RunJavaScriptPromptResultListener) 1586 1587 } 1588 1506 1589 void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient) 1507 1590 { … … 1614 1697 virtual void runJavaScriptAlert(WebPageProxy* page, const String& message, WebFrameProxy* frame, const SecurityOriginData& securityOriginData, std::function<void ()> completionHandler) override 1615 1698 { 1616 if (!m_client.runJavaScriptAlert && !m_client.runJavaScriptAlert_deprecatedForUseWithV0) { 1699 if (m_client.runJavaScriptAlert) { 1700 RefPtr<RunJavaScriptAlertResultListener> listener = RunJavaScriptAlertResultListener::create(WTF::move(completionHandler)); 1701 RefPtr<API::SecurityOrigin> securityOrigin = API::SecurityOrigin::create(securityOriginData.protocol, securityOriginData.host, securityOriginData.port); 1702 m_client.runJavaScriptAlert(toAPI(page), toAPI(message.impl()), toAPI(frame), toAPI(securityOrigin.get()), toAPI(listener.get()), m_client.base.clientInfo); 1703 return; 1704 } 1705 1706 if (m_client.runJavaScriptAlert_deprecatedForUseWithV5) { 1707 RefPtr<API::SecurityOrigin> securityOrigin = API::SecurityOrigin::create(securityOriginData.protocol, securityOriginData.host, securityOriginData.port); 1708 m_client.runJavaScriptAlert_deprecatedForUseWithV5(toAPI(page), toAPI(message.impl()), toAPI(frame), toAPI(securityOrigin.get()), m_client.base.clientInfo); 1617 1709 completionHandler(); 1618 1710 return; 1619 1711 } 1620 1621 if (m_client.runJavaScriptAlert) { 1712 1713 if (m_client.runJavaScriptAlert_deprecatedForUseWithV0) { 1714 m_client.runJavaScriptAlert_deprecatedForUseWithV0(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo); 1715 completionHandler(); 1716 return; 1717 } 1718 1719 1720 completionHandler(); 1721 } 1722 1723 virtual void runJavaScriptConfirm(WebPageProxy* page, const String& message, WebFrameProxy* frame, const SecurityOriginData& securityOriginData, std::function<void (bool)> completionHandler) override 1724 { 1725 if (m_client.runJavaScriptConfirm) { 1726 RefPtr<RunJavaScriptConfirmResultListener> listener = RunJavaScriptConfirmResultListener::create(WTF::move(completionHandler)); 1622 1727 RefPtr<API::SecurityOrigin> securityOrigin = API::SecurityOrigin::create(securityOriginData.protocol, securityOriginData.host, securityOriginData.port); 1623 m_client.runJavaScriptAlert(toAPI(page), toAPI(message.impl()), toAPI(frame), toAPI(securityOrigin.get()), m_client.base.clientInfo); 1624 } else 1625 m_client.runJavaScriptAlert_deprecatedForUseWithV0(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo); 1626 1627 completionHandler(); 1628 } 1629 1630 virtual void runJavaScriptConfirm(WebPageProxy* page, const String& message, WebFrameProxy* frame, const SecurityOriginData& securityOriginData, std::function<void (bool)> completionHandler) override 1631 { 1632 if (!m_client.runJavaScriptConfirm && !m_client.runJavaScriptConfirm_deprecatedForUseWithV0) { 1633 completionHandler(false); 1728 m_client.runJavaScriptConfirm(toAPI(page), toAPI(message.impl()), toAPI(frame), toAPI(securityOrigin.get()), toAPI(listener.get()), m_client.base.clientInfo); 1634 1729 return; 1635 1730 } 1636 1731 1637 bool result; 1638 if (m_client.runJavaScriptConfirm) { 1732 if (m_client.runJavaScriptConfirm_deprecatedForUseWithV5) { 1639 1733 RefPtr<API::SecurityOrigin> securityOrigin = API::SecurityOrigin::create(securityOriginData.protocol, securityOriginData.host, securityOriginData.port); 1640 result = m_client.runJavaScriptConfirm(toAPI(page), toAPI(message.impl()), toAPI(frame), toAPI(securityOrigin.get()), m_client.base.clientInfo); 1641 } else 1642 result = m_client.runJavaScriptConfirm_deprecatedForUseWithV0(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo); 1643 1644 completionHandler(result); 1734 bool result = m_client.runJavaScriptConfirm_deprecatedForUseWithV5(toAPI(page), toAPI(message.impl()), toAPI(frame), toAPI(securityOrigin.get()), m_client.base.clientInfo); 1735 1736 completionHandler(result); 1737 return; 1738 } 1739 1740 if (m_client.runJavaScriptConfirm_deprecatedForUseWithV0) { 1741 bool result = m_client.runJavaScriptConfirm_deprecatedForUseWithV0(toAPI(page), toAPI(message.impl()), toAPI(frame), m_client.base.clientInfo); 1742 1743 completionHandler(result); 1744 return; 1745 } 1746 1747 completionHandler(false); 1645 1748 } 1646 1749 1647 1750 virtual void runJavaScriptPrompt(WebPageProxy* page, const String& message, const String& defaultValue, WebFrameProxy* frame, const SecurityOriginData& securityOriginData, std::function<void (const String&)> completionHandler) override 1648 1751 { 1649 if (!m_client.runJavaScriptPrompt && !m_client.runJavaScriptPrompt_deprecatedForUseWithV0) { 1650 completionHandler(String()); 1752 if (m_client.runJavaScriptPrompt) { 1753 RefPtr<RunJavaScriptPromptResultListener> listener = RunJavaScriptPromptResultListener::create(WTF::move(completionHandler)); 1754 RefPtr<API::SecurityOrigin> securityOrigin = API::SecurityOrigin::create(securityOriginData.protocol, securityOriginData.host, securityOriginData.port); 1755 m_client.runJavaScriptPrompt(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), toAPI(securityOrigin.get()), toAPI(listener.get()), m_client.base.clientInfo); 1651 1756 return; 1652 1757 } 1653 1758 1654 RefPtr<API::String> string; 1655 if (m_client.runJavaScriptPrompt) { 1759 if (m_client.runJavaScriptPrompt_deprecatedForUseWithV5) { 1656 1760 RefPtr<API::SecurityOrigin> securityOrigin = API::SecurityOrigin::create(securityOriginData.protocol, securityOriginData.host, securityOriginData.port); 1657 string = adoptRef(toImpl(m_client.runJavaScriptPrompt(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), toAPI(securityOrigin.get()), m_client.base.clientInfo)));1658 } else1659 string = adoptRef(toImpl(m_client.runJavaScriptPrompt_deprecatedForUseWithV0(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), m_client.base.clientInfo)));1660 1661 if (!string) {1662 completionHandler(String());1761 RefPtr<API::String> string = adoptRef(toImpl(m_client.runJavaScriptPrompt_deprecatedForUseWithV5(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), toAPI(securityOrigin.get()), m_client.base.clientInfo))); 1762 1763 if (string) 1764 completionHandler(string->string()); 1765 else 1766 completionHandler(String()); 1663 1767 return; 1664 1768 } 1665 1666 completionHandler(string->string()); 1769 1770 if (m_client.runJavaScriptPrompt_deprecatedForUseWithV0) { 1771 RefPtr<API::String> string = adoptRef(toImpl(m_client.runJavaScriptPrompt_deprecatedForUseWithV0(toAPI(page), toAPI(message.impl()), toAPI(defaultValue.impl()), toAPI(frame), m_client.base.clientInfo))); 1772 1773 if (string) 1774 completionHandler(string->string()); 1775 else 1776 completionHandler(String()); 1777 return; 1778 } 1779 1780 completionHandler(String()); 1667 1781 } 1668 1782 -
trunk/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h
r191323 r192911 49 49 typedef uint32_t WKPluginUnavailabilityReason; 50 50 51 52 WK_EXPORT WKTypeID WKPageRunJavaScriptAlertResultListenerGetTypeID(); 53 WK_EXPORT void WKPageRunJavaScriptAlertResultListenerCall(WKPageRunJavaScriptAlertResultListenerRef listener); 54 55 WK_EXPORT WKTypeID WKPageRunJavaScriptConfirmResultListenerGetTypeID(); 56 WK_EXPORT void WKPageRunJavaScriptConfirmResultListenerCall(WKPageRunJavaScriptConfirmResultListenerRef listener, bool result); 57 58 WK_EXPORT WKTypeID WKPageRunJavaScriptPromptResultListenerGetTypeID(); 59 WK_EXPORT void WKPageRunJavaScriptPromptResultListenerCall(WKPageRunJavaScriptPromptResultListenerRef listener, WKStringRef result); 60 51 61 typedef void (*WKPageUIClientCallback)(WKPageRef page, const void* clientInfo); 52 62 typedef WKPageRef (*WKPageCreateNewPageCallback)(WKPageRef page, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo); 53 typedef void (*WKPageRunJavaScriptAlertCallback)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo);54 typedef bool (*WKPageRunJavaScriptConfirmCallback)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo);55 typedef WKStringRef (*WKPageRunJavaScriptPromptCallback)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo);63 typedef void (*WKPageRunJavaScriptAlertCallback)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptAlertResultListenerRef listener, const void *clientInfo); 64 typedef void (*WKPageRunJavaScriptConfirmCallback)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptConfirmResultListenerRef listener, const void *clientInfo); 65 typedef void (*WKPageRunJavaScriptPromptCallback)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, WKPageRunJavaScriptPromptResultListenerRef listener, const void *clientInfo); 56 66 typedef void (*WKPageTakeFocusCallback)(WKPageRef page, WKFocusDirection direction, const void *clientInfo); 57 67 typedef void (*WKPageFocusCallback)(WKPageRef page, const void *clientInfo); … … 100 110 typedef WKStringRef (*WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, const void *clientInfo); 101 111 typedef WKPageRef (*WKPageCreateNewPageCallback_deprecatedForUseWithV1)(WKPageRef page, WKURLRequestRef urlRequest, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo); 112 typedef void (*WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo); 113 typedef bool (*WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo); 114 typedef WKStringRef (*WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo); 115 102 116 103 117 typedef struct WKPageUIClientBase { … … 449 463 WKPageDecidePolicyForUserMediaPermissionRequestCallback decidePolicyForUserMediaPermissionRequest; 450 464 WKPageDidClickAutoFillButtonCallback didClickAutoFillButton; 451 WKPageRunJavaScriptAlertCallback runJavaScriptAlert;452 WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm;453 WKPageRunJavaScriptPromptCallback runJavaScriptPrompt;465 WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5 runJavaScriptAlert; 466 WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5 runJavaScriptConfirm; 467 WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5 runJavaScriptPrompt; 454 468 WKPageMediaSessionMetadataDidChangeCallback mediaSessionMetadataDidChange; 455 469 } WKPageUIClientV5; … … 522 536 WKPageDecidePolicyForUserMediaPermissionRequestCallback decidePolicyForUserMediaPermissionRequest; 523 537 WKPageDidClickAutoFillButtonCallback didClickAutoFillButton; 538 WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV5 runJavaScriptAlert_deprecatedForUseWithV5; 539 WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV5 runJavaScriptConfirm_deprecatedForUseWithV5; 540 WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV5 runJavaScriptPrompt_deprecatedForUseWithV5; 541 WKPageMediaSessionMetadataDidChangeCallback mediaSessionMetadataDidChange; 542 543 // Version 6. 544 WKPageCreateNewPageCallback createNewPage; 524 545 WKPageRunJavaScriptAlertCallback runJavaScriptAlert; 525 546 WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm; 526 547 WKPageRunJavaScriptPromptCallback runJavaScriptPrompt; 527 WKPageMediaSessionMetadataDidChangeCallback mediaSessionMetadataDidChange;528 529 // Version 6.530 WKPageCreateNewPageCallback createNewPage;531 532 548 } WKPageUIClientV6; 533 549 -
trunk/Tools/ChangeLog
r192910 r192911 1 2015-12-01 Sam Weinig <sam@webkit.org> 2 3 Need completionHandler-based WebKit C SPI for alert, confirm, and prompt 4 <rdar://problem/23320863> 5 https://bugs.webkit.org/show_bug.cgi?id=151708 6 7 Reviewed by Anders Carlsson. 8 9 * WebKitTestRunner/TestController.cpp: 10 (WTR::TestController::createOtherPage): 11 (WTR::TestController::createWebViewWithOptions): 12 Update for new WKPageUIClient. 13 1 14 2015-12-01 Anders Carlsson <andersca@apple.com> 2 15 -
trunk/Tools/WebKitTestRunner/TestController.cpp
r192808 r192911 276 276 0, // mediaSessionMetadataDidChange 277 277 createOtherPage, 278 0, // runJavaScriptAlert 279 0, // runJavaScriptConfirm 280 0 // runJavaScriptPrompt 278 281 }; 279 282 WKPageSetPageUIClient(newPage, &otherPageUIClient.base); … … 535 538 0, // mediaSessionMetadataDidChange 536 539 createOtherPage, 540 0, // runJavaScriptAlert 541 0, // runJavaScriptConfirm 542 0, // runJavaScriptPrompt 537 543 }; 538 544 WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient.base);
Note:
See TracChangeset
for help on using the changeset viewer.