Changeset 225438 in webkit


Ignore:
Timestamp:
Dec 1, 2017, 5:38:50 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

[Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI Processes
https://bugs.webkit.org/show_bug.cgi?id=179714

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-12-01
Reviewed by Wenson Hsieh.

Source/WebCore:

These changes allow the HTMLMenuElement and HTMLMenuItemElement to parse attributes relating
to the touch bar and convey changes to the elements that will eventually be propogated to the
UI process.

No new tests at this point because the changes to HTMLMenuElement and HTMLMenuItemElement are
new properties, which might not be worth testing, and overriden methods for insertedIntoAncestor
and removedFromAncestor, which are involved in sending a message to a UI process but might be
difficult to test at this point since the UI process only receives (and does not yet process)
the message.

  • html/HTMLMenuElement.cpp:

(WebCore::HTMLMenuElement::insertedIntoAncestor):
(WebCore::HTMLMenuElement::removedFromAncestor):
(WebCore::HTMLMenuElement::parseAttribute):

  • html/HTMLMenuElement.h:
  • html/HTMLMenuItemElement.cpp:

(WebCore::HTMLMenuItemElement::insertedIntoAncestor):
(WebCore::HTMLMenuItemElement::removedFromAncestor):

  • html/HTMLMenuItemElement.h:
  • page/ChromeClient.h:

Source/WebKit:

These changes define the TouchBarMenuData and TouchBarMenuItemData objects which draw information
from touch bar HTMLMenuElement and HTMLMenuItemElement. These objects represent the contents of
the page-customized touch bar. Changes to the html elements representing the touch bar are sent
to the UI process.

  • Shared/TouchBarMenuData.cpp: Copied from Source/WebCore/html/HTMLMenuItemElement.cpp.

(WebKit::TouchBarMenuData::TouchBarMenuData):
(WebKit::TouchBarMenuData::addMenuItem):
(WebKit::TouchBarMenuData::removeMenuItem):
(WebKit::TouchBarMenuData::encode const):
(WebKit::TouchBarMenuData::decode):

  • Shared/TouchBarMenuData.h: Copied from Source/WebCore/html/HTMLMenuItemElement.h.

(WebKit::TouchBarMenuData::items):
(WebKit::TouchBarMenuData::isPageCustomized):
(WebKit::TouchBarMenuData::setIsPageCustomized):

  • Shared/TouchBarMenuItemData.cpp: Added.

(WebKit::TouchBarMenuItemData::getItemType):
(WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
(WebKit::TouchBarMenuItemData::encode const):
(WebKit::TouchBarMenuItemData::decode):

  • Shared/TouchBarMenuItemData.h: Added.

(WebKit::operator<):
(WebKit::operator>):
(WebKit::operator<=):
(WebKit::operator>=):
(WebKit::operator==):
(WebKit::operator!=):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::touchBarMenuDataChanged):
(WebKit::WebPageProxy::touchBarMenuItemDataAdded):
(WebKit::WebPageProxy::touchBarMenuItemDataRemoved):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::touchBarMenuData const):

  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::didInsertMenuElement):
(WebKit::WebChromeClient::didRemoveMenuElement):
(WebKit::WebChromeClient::didInsertMenuItemElement):
(WebKit::WebChromeClient::didRemoveMenuItemElement):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didInsertMenuElement):
(WebKit::WebPage::didRemoveMenuElement):
(WebKit::WebPage::didInsertMenuItemElement):
(WebKit::WebPage::didRemoveMenuItemElement):
(WebKit::WebPage::sendTouchBarMenuDataRemovedUpdate):
(WebKit::WebPage::sendTouchBarMenuDataAddedUpdate):
(WebKit::WebPage::sendTouchBarMenuItemDataAddedUpdate):
(WebKit::WebPage::sendTouchBarMenuItemDataRemovedUpdate):

  • WebProcess/WebPage/WebPage.h:
Location:
trunk/Source
Files:
2 added
15 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r225431 r225438  
     12017-12-01  Aishwarya Nirmal  <anirmal@apple.com>
     2
     3        [Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI Processes
     4        https://bugs.webkit.org/show_bug.cgi?id=179714
     5
     6        Reviewed by Wenson Hsieh.
     7
     8        These changes allow the HTMLMenuElement and HTMLMenuItemElement to parse attributes relating
     9        to the touch bar and convey changes to the elements that will eventually be propogated to the
     10        UI process.
     11
     12        No new tests at this point because the changes to HTMLMenuElement and HTMLMenuItemElement are
     13        new properties, which might not be worth testing, and overriden methods for insertedIntoAncestor
     14        and removedFromAncestor, which are involved in sending a message to a UI process but might be
     15        difficult to test at this point since the UI process only receives (and does not yet process)
     16        the message.
     17
     18        * html/HTMLMenuElement.cpp:
     19        (WebCore::HTMLMenuElement::insertedIntoAncestor):
     20        (WebCore::HTMLMenuElement::removedFromAncestor):
     21        (WebCore::HTMLMenuElement::parseAttribute):
     22        * html/HTMLMenuElement.h:
     23        * html/HTMLMenuItemElement.cpp:
     24        (WebCore::HTMLMenuItemElement::insertedIntoAncestor):
     25        (WebCore::HTMLMenuItemElement::removedFromAncestor):
     26        * html/HTMLMenuItemElement.h:
     27        * page/ChromeClient.h:
     28
    1292017-12-01  Daniel Bates  <dabates@apple.com>
    230
  • trunk/Source/WebCore/html/HTMLMenuElement.cpp

    r177996 r225438  
    2424#include "HTMLMenuElement.h"
    2525
     26#include "Chrome.h"
     27#include "ChromeClient.h"
     28#include "Document.h"
     29#include "HTMLMenuItemElement.h"
    2630#include "HTMLNames.h"
     31#include "Page.h"
    2732
    2833namespace WebCore {
     
    3641}
    3742
     43Node::InsertedIntoAncestorResult HTMLMenuElement::insertedIntoAncestor(InsertionType type, ContainerNode& ancestor)
     44{
     45    auto result = HTMLElement::insertedIntoAncestor(type, ancestor);
     46    if (type.connectedToDocument && RuntimeEnabledFeatures::sharedFeatures().menuItemElementEnabled() && m_isTouchBarMenu) {
     47        if (auto* page = document().page())
     48            page->chrome().client().didInsertMenuElement(*this);
     49    }
     50    return result;
     51}
     52
     53void HTMLMenuElement::removedFromAncestor(RemovalType type, ContainerNode& ancestor)
     54{
     55    HTMLElement::removedFromAncestor(type, ancestor);
     56    if (type.disconnectedFromDocument && RuntimeEnabledFeatures::sharedFeatures().menuItemElementEnabled() && m_isTouchBarMenu) {
     57        if (auto* page = document().page())
     58            page->chrome().client().didRemoveMenuElement(*this);
     59    }
     60}
     61
     62void HTMLMenuElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
     63{
     64    if (name != typeAttr || !RuntimeEnabledFeatures::sharedFeatures().menuItemElementEnabled()) {
     65        HTMLElement::parseAttribute(name, value);
     66        return;
     67    }
     68    bool wasTouchBarMenu = m_isTouchBarMenu;
     69    m_isTouchBarMenu = equalLettersIgnoringASCIICase(value, "touchbar");
     70    if (!wasTouchBarMenu && m_isTouchBarMenu) {
     71        if (auto* page = document().page()) {
     72            page->chrome().client().didInsertMenuElement(*this);
     73            for (auto& child : childrenOfType<Element>(*this))
     74                page->chrome().client().didInsertMenuItemElement(downcast<HTMLMenuItemElement>(child));
     75        }
     76    } else if (wasTouchBarMenu && !m_isTouchBarMenu) {
     77        if (auto* page = document().page())
     78            page->chrome().client().didRemoveMenuElement(*this);
     79    }
     80}
     81
    3882Ref<HTMLMenuElement> HTMLMenuElement::create(const QualifiedName& tagName, Document& document)
    3983{
  • trunk/Source/WebCore/html/HTMLMenuElement.h

    r208179 r225438  
    3131    static Ref<HTMLMenuElement> create(const QualifiedName&, Document&);
    3232   
     33    bool isTouchBarMenu() const { return m_isTouchBarMenu; }
     34
    3335private:
    3436    HTMLMenuElement(const QualifiedName&, Document&);
     37
     38    InsertedIntoAncestorResult insertedIntoAncestor(InsertionType, ContainerNode&) final;
     39    void removedFromAncestor(RemovalType, ContainerNode&) final;
     40    void parseAttribute(const QualifiedName&, const AtomicString&) final;
     41
     42    bool m_isTouchBarMenu;
    3543};
    3644
  • trunk/Source/WebCore/html/HTMLMenuItemElement.cpp

    r224457 r225438  
    2727#include "HTMLMenuItemElement.h"
    2828
     29#include "Chrome.h"
     30#include "ChromeClient.h"
     31#include "Document.h"
     32#include "HTMLMenuElement.h"
    2933#include "HTMLNames.h"
     34#include "Page.h"
    3035
    3136namespace WebCore {
     
    3843    ASSERT(hasTagName(menuitemTag));
    3944}
    40    
     45
     46Node::InsertedIntoAncestorResult HTMLMenuItemElement::insertedIntoAncestor(InsertionType type, ContainerNode& ancestor)
     47{
     48    auto result = HTMLElement::insertedIntoAncestor(type, ancestor);
     49    if (type.connectedToDocument) {
     50        if (auto* page = document().page()) {
     51            if (is<HTMLMenuElement>(ancestor) && downcast<HTMLMenuElement>(ancestor).isTouchBarMenu())
     52                page->chrome().client().didInsertMenuItemElement(*this);
     53        }
     54    }
     55    return result;
     56}
     57
     58void HTMLMenuItemElement::removedFromAncestor(RemovalType type, ContainerNode& ancestor)
     59{
     60    HTMLElement::removedFromAncestor(type, ancestor);
     61    if (type.disconnectedFromDocument) {
     62        if (auto* page = document().page()) {
     63            if (is<HTMLMenuElement>(ancestor) && downcast<HTMLMenuElement>(ancestor).isTouchBarMenu())
     64                page->chrome().client().didRemoveMenuItemElement(*this);
     65        }
     66    }
     67}
     68
    4169Ref<HTMLMenuItemElement> HTMLMenuItemElement::create(const QualifiedName& tagName, Document& document)
    4270{
    4371    return adoptRef(*new HTMLMenuItemElement(tagName, document));
    4472}
    45    
     73
    4674}
  • trunk/Source/WebCore/html/HTMLMenuItemElement.h

    r224457 r225438  
    3636private:
    3737    HTMLMenuItemElement(const QualifiedName&, Document&);
     38
     39    InsertedIntoAncestorResult insertedIntoAncestor(InsertionType, ContainerNode&) final;
     40    void removedFromAncestor(RemovalType, ContainerNode&) final;
    3841};
    3942
  • trunk/Source/WebCore/page/ChromeClient.h

    r225223 r225438  
    469469    virtual void requestStorageAccess(String&& /*subFrameHost*/, String&& /*topFrameHost*/, WTF::Function<void (bool)>&& callback) { callback(false); }
    470470
     471    virtual void didInsertMenuElement(HTMLMenuElement&) { }
     472    virtual void didRemoveMenuElement(HTMLMenuElement&) { }
     473    virtual void didInsertMenuItemElement(HTMLMenuItemElement&) { }
     474    virtual void didRemoveMenuItemElement(HTMLMenuItemElement&) { }
     475
    471476protected:
    472477    virtual ~ChromeClient() = default;
  • trunk/Source/WebKit/ChangeLog

    r225429 r225438  
     12017-12-01  Aishwarya Nirmal  <anirmal@apple.com>
     2
     3        [Touch Bar Web API] Object representing Touch Bar Menu to send between Web and UI Processes
     4        https://bugs.webkit.org/show_bug.cgi?id=179714
     5
     6        Reviewed by Wenson Hsieh.
     7
     8        These changes define the TouchBarMenuData and TouchBarMenuItemData objects which draw information
     9        from touch bar HTMLMenuElement and HTMLMenuItemElement. These objects represent the contents of
     10        the page-customized touch bar. Changes to the html elements representing the touch bar are sent
     11        to the UI process.
     12
     13        * Shared/TouchBarMenuData.cpp: Copied from Source/WebCore/html/HTMLMenuItemElement.cpp.
     14        (WebKit::TouchBarMenuData::TouchBarMenuData):
     15        (WebKit::TouchBarMenuData::addMenuItem):
     16        (WebKit::TouchBarMenuData::removeMenuItem):
     17        (WebKit::TouchBarMenuData::encode const):
     18        (WebKit::TouchBarMenuData::decode):
     19        * Shared/TouchBarMenuData.h: Copied from Source/WebCore/html/HTMLMenuItemElement.h.
     20        (WebKit::TouchBarMenuData::items):
     21        (WebKit::TouchBarMenuData::isPageCustomized):
     22        (WebKit::TouchBarMenuData::setIsPageCustomized):
     23        * Shared/TouchBarMenuItemData.cpp: Added.
     24        (WebKit::TouchBarMenuItemData::getItemType):
     25        (WebKit::TouchBarMenuItemData::TouchBarMenuItemData):
     26        (WebKit::TouchBarMenuItemData::encode const):
     27        (WebKit::TouchBarMenuItemData::decode):
     28        * Shared/TouchBarMenuItemData.h: Added.
     29        (WebKit::operator<):
     30        (WebKit::operator>):
     31        (WebKit::operator<=):
     32        (WebKit::operator>=):
     33        (WebKit::operator==):
     34        (WebKit::operator!=):
     35        * UIProcess/WebPageProxy.cpp:
     36        (WebKit::WebPageProxy::touchBarMenuDataChanged):
     37        (WebKit::WebPageProxy::touchBarMenuItemDataAdded):
     38        (WebKit::WebPageProxy::touchBarMenuItemDataRemoved):
     39        * UIProcess/WebPageProxy.h:
     40        (WebKit::WebPageProxy::touchBarMenuData const):
     41        * UIProcess/WebPageProxy.messages.in:
     42        * WebKit.xcodeproj/project.pbxproj:
     43        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     44        (WebKit::WebChromeClient::didInsertMenuElement):
     45        (WebKit::WebChromeClient::didRemoveMenuElement):
     46        (WebKit::WebChromeClient::didInsertMenuItemElement):
     47        (WebKit::WebChromeClient::didRemoveMenuItemElement):
     48        * WebProcess/WebCoreSupport/WebChromeClient.h:
     49        * WebProcess/WebPage/WebPage.cpp:
     50        (WebKit::WebPage::didInsertMenuElement):
     51        (WebKit::WebPage::didRemoveMenuElement):
     52        (WebKit::WebPage::didInsertMenuItemElement):
     53        (WebKit::WebPage::didRemoveMenuItemElement):
     54        (WebKit::WebPage::sendTouchBarMenuDataRemovedUpdate):
     55        (WebKit::WebPage::sendTouchBarMenuDataAddedUpdate):
     56        (WebKit::WebPage::sendTouchBarMenuItemDataAddedUpdate):
     57        (WebKit::WebPage::sendTouchBarMenuItemDataRemovedUpdate):
     58        * WebProcess/WebPage/WebPage.h:
     59
    1602017-12-01  Daniel Bates  <dabates@apple.com>
    261
  • trunk/Source/WebKit/Shared/TouchBarMenuData.cpp

    r225437 r225438  
    2525
    2626#include "config.h"
    27 #include "HTMLMenuItemElement.h"
     27#include "TouchBarMenuData.h"
    2828
    29 #include "HTMLNames.h"
     29#include "Decoder.h"
     30#include "Encoder.h"
     31#include "TouchBarMenuItemData.h"
     32#include "WebCoreArgumentCoders.h"
     33#include <WebCore/HTMLElement.h>
     34#include <WebCore/HTMLMenuElement.h>
     35#include <WebCore/HTMLNames.h>
     36#include <WebCore/Node.h>
    3037
    31 namespace WebCore {
    32 
    33 using namespace HTMLNames;
     38namespace WebKit {
    3439   
    35 inline HTMLMenuItemElement::HTMLMenuItemElement(const QualifiedName& tagName, Document& document)
    36     : HTMLElement(tagName, document)
     40TouchBarMenuData::TouchBarMenuData()
    3741{
    38     ASSERT(hasTagName(menuitemTag));
    3942}
    4043   
    41 Ref<HTMLMenuItemElement> HTMLMenuItemElement::create(const QualifiedName& tagName, Document& document)
     44TouchBarMenuData::TouchBarMenuData(WebCore::HTMLMenuElement& element)
    4245{
    43     return adoptRef(*new HTMLMenuItemElement(tagName, document));
     46    if (!element.isTouchBarMenu())
     47        return;
     48    m_id = element.attributeWithoutSynchronization(WebCore::HTMLNames::idAttr);
     49    m_isPageCustomized = true;
     50}
     51   
     52TouchBarMenuData::TouchBarMenuData(const TouchBarMenuData& touchBarMenuData)
     53    : m_items(touchBarMenuData.m_items)
     54    , m_id(touchBarMenuData.m_id)
     55    , m_isPageCustomized(touchBarMenuData.m_isPageCustomized)
     56{
     57}
     58   
     59void TouchBarMenuData::addMenuItem(const TouchBarMenuItemData& data)
     60{
     61    m_items.append(data);
     62}
     63   
     64void TouchBarMenuData::removeMenuItem(const TouchBarMenuItemData& data)
     65{
     66    m_items.removeFirst(data);
     67}
     68   
     69void TouchBarMenuData::encode(IPC::Encoder& encoder) const
     70{
     71    encoder << m_items;
     72}
     73
     74bool TouchBarMenuData::decode(IPC::Decoder& decoder, TouchBarMenuData& data)
     75{
     76    if (!decoder.decode(data.m_items))
     77        return false;
     78   
     79    return true;
    4480}
    4581   
  • trunk/Source/WebKit/Shared/TouchBarMenuData.h

    r225437 r225438  
    2525
    2626#pragma once
     27#include "ArgumentCoders.h"
     28#include "TouchBarMenuItemData.h"
     29#include <WebCore/HTMLMenuElement.h>
     30#include <wtf/text/WTFString.h>
    2731
    28 #include "HTMLElement.h"
     32namespace IPC {
     33class Decoder;
     34class Encoder;
     35}
    2936
    30 namespace WebCore {
     37namespace WebKit {
    3138
    32 class HTMLMenuItemElement final : public HTMLElement {
     39class TouchBarMenuData {
    3340public:
    34     static Ref<HTMLMenuItemElement> create(const QualifiedName&, Document&);
     41    explicit TouchBarMenuData();
     42    explicit TouchBarMenuData(WebCore::HTMLMenuElement&);
     43    explicit TouchBarMenuData(const TouchBarMenuData&);
     44
     45    void addMenuItem(const TouchBarMenuItemData&);
     46    void removeMenuItem(const TouchBarMenuItemData&);
     47   
     48    const Vector<TouchBarMenuItemData>& items() { return m_items; }
     49   
     50    void encode(IPC::Encoder&) const;
     51    static bool decode(IPC::Decoder&, TouchBarMenuData&);
     52   
     53    void setID(String);
     54    bool isPageCustomized() { return m_isPageCustomized; }
     55    void setIsPageCustomized(bool customized) { m_isPageCustomized = customized; }
    3556   
    3657private:
    37     HTMLMenuItemElement(const QualifiedName&, Document&);
     58    Vector<TouchBarMenuItemData> m_items;
     59    String m_id;
     60   
     61    bool m_isPageCustomized { false };
    3862};
    39 
    40 } // namespace WebCore
     63   
     64}
  • trunk/Source/WebKit/UIProcess/WebPageProxy.cpp

    r225422 r225438  
    156156#include "RemoteLayerTreeDrawingAreaProxy.h"
    157157#include "RemoteLayerTreeScrollingPerformanceData.h"
     158#include "TouchBarMenuData.h"
     159#include "TouchBarMenuItemData.h"
    158160#include "VideoFullscreenManagerProxy.h"
    159161#include "VideoFullscreenManagerProxyMessages.h"
     
    71497151}
    71507152
     7153#if PLATFORM(COCOA)
     7154void WebPageProxy::touchBarMenuDataChanged(const TouchBarMenuData& touchBarMenuData)
     7155{
     7156    m_touchBarMenuData = touchBarMenuData;
     7157}
     7158
     7159void WebPageProxy::touchBarMenuItemDataAdded(const TouchBarMenuItemData& touchBarMenuItemData)
     7160{
     7161    m_touchBarMenuData.addMenuItem(touchBarMenuItemData);
     7162}
     7163
     7164void WebPageProxy::touchBarMenuItemDataRemoved(const TouchBarMenuItemData& touchBarMenuItemData)
     7165{
     7166    m_touchBarMenuData.removeMenuItem(touchBarMenuItemData);
     7167}
     7168#endif
     7169
    71517170#if ENABLE(ATTACHMENT_ELEMENT)
    71527171
  • trunk/Source/WebKit/UIProcess/WebPageProxy.h

    r225422 r225438  
    105105#if PLATFORM(COCOA)
    106106#include "LayerRepresentation.h"
     107#include "TouchBarMenuData.h"
     108#include "TouchBarMenuItemData.h"
    107109#endif
    108110
     
    483485    bool hasSelectedRange() const { return m_editorState.selectionIsRange; }
    484486    bool isContentEditable() const { return m_editorState.isContentEditable; }
    485    
     487
     488#if PLATFORM(COCOA)
     489    const TouchBarMenuData& touchBarMenuData() const { return m_touchBarMenuData; }
     490#endif
     491
    486492    bool maintainsInactiveSelection() const;
    487493    void setMaintainsInactiveSelection(bool);
     
    12211227    void editorStateChanged(const EditorState&);
    12221228
     1229#if PLATFORM(COCOA)
     1230    void touchBarMenuDataRemoved();
     1231    void touchBarMenuDataChanged(const TouchBarMenuData&);
     1232    void touchBarMenuItemDataAdded(const TouchBarMenuItemData&);
     1233    void touchBarMenuItemDataRemoved(const TouchBarMenuItemData&);
     1234#endif
     1235
    12231236    void requestStorageAccess(String&& subFrameHost, String&& topFrameHost, uint64_t webProcessContextId);
    12241237
     
    17841797    bool m_isEditable { false };
    17851798
     1799#if PLATFORM(COCOA)
     1800    TouchBarMenuData m_touchBarMenuData;
     1801#endif
     1802
    17861803    double m_textZoomFactor { 1 };
    17871804    double m_pageZoomFactor { 1 };
  • trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in

    r225358 r225438  
    315315#endif
    316316
     317
    317318#if ENABLE(DATA_INTERACTION)
    318319    DidPerformDataInteractionControllerOperation(bool handled)
     
    347348
    348349    SearchTheWeb(String string)
     350
     351    TouchBarMenuDataChanged(WebKit::TouchBarMenuData touchBarMenuData)
     352    TouchBarMenuItemDataAdded(struct WebKit::TouchBarMenuItemData touchBarMenuItemData)
     353    TouchBarMenuItemDataRemoved(struct WebKit::TouchBarMenuItemData touchBarMenuItemData)
    349354#endif
    350355
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r225358 r225438  
    724724                2E5C770F1FA7D429005932C3 /* APIAttachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E5C770D1FA7D429005932C3 /* APIAttachment.cpp */; };
    725725                2E7A944A1BBD97C300945547 /* _WKFocusedElementInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
     726                2F809DD71FBD1BC9005FE63A /* TouchBarMenuItemData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2F809DD51FBD1BC9005FE63A /* TouchBarMenuItemData.cpp */; };
     727                2F8336861FA139DF00C6E080 /* TouchBarMenuData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD43B911FA006A10083F51C /* TouchBarMenuData.h */; };
     728                2F8336871FA13A1E00C6E080 /* TouchBarMenuData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FD43B921FA006A30083F51C /* TouchBarMenuData.cpp */; };
    726729                31099973146C75A20029DEB9 /* WebNotificationClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31099971146C759B0029DEB9 /* WebNotificationClient.cpp */; };
    727730                310999C7146C9E3D0029DEB9 /* WebNotificationClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 31099968146C71F50029DEB9 /* WebNotificationClient.h */; };
     
    30373040                2E5C770D1FA7D429005932C3 /* APIAttachment.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = APIAttachment.cpp; sourceTree = "<group>"; };
    30383041                2E7A94491BBD95C600945547 /* _WKFocusedElementInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = _WKFocusedElementInfo.h; sourceTree = "<group>"; };
     3042                2F809DD51FBD1BC9005FE63A /* TouchBarMenuItemData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TouchBarMenuItemData.cpp; sourceTree = "<group>"; };
     3043                2F809DD91FBD1BF2005FE63A /* TouchBarMenuItemData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TouchBarMenuItemData.h; sourceTree = "<group>"; };
     3044                2FD43B911FA006A10083F51C /* TouchBarMenuData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchBarMenuData.h; sourceTree = "<group>"; };
     3045                2FD43B921FA006A30083F51C /* TouchBarMenuData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TouchBarMenuData.cpp; sourceTree = "<group>"; };
    30393046                31099968146C71F50029DEB9 /* WebNotificationClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationClient.h; sourceTree = "<group>"; };
    30403047                31099971146C759B0029DEB9 /* WebNotificationClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationClient.cpp; sourceTree = "<group>"; };
     
    51275134                                5272B2891406985D0096A5D0 /* StatisticsData.h */,
    51285135                                1A5E4DA312D3BD3D0099A2BB /* TextCheckerState.h */,
     5136                                2FD43B921FA006A30083F51C /* TouchBarMenuData.cpp */,
     5137                                2FD43B911FA006A10083F51C /* TouchBarMenuData.h */,
     5138                                2F809DD51FBD1BC9005FE63A /* TouchBarMenuItemData.cpp */,
     5139                                2F809DD91FBD1BF2005FE63A /* TouchBarMenuItemData.h */,
    51295140                                1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */,
    51305141                                1A64245C12DE29A100CAAE2C /* UpdateInfo.h */,
     
    89368947                                1AAF263914687C39004A1E8A /* TiledCoreAnimationDrawingArea.h in Headers */,
    89378948                                1AF05D8714688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h in Headers */,
     8949                                2F8336861FA139DF00C6E080 /* TouchBarMenuData.h in Headers */,
    89388950                                1AFE436618B6C081009C7A48 /* UIDelegate.h in Headers */,
    89398951                                515BE1B51D5917FF00DD7C68 /* UIGamepad.h in Headers */,
     
    1054410556                                1AAF263814687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm in Sources */,
    1054510557                                1AF05D8614688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.mm in Sources */,
     10558                                2F8336871FA13A1E00C6E080 /* TouchBarMenuData.cpp in Sources */,
     10559                                2F809DD71FBD1BC9005FE63A /* TouchBarMenuItemData.cpp in Sources */,
    1054610560                                1AFE436518B6C081009C7A48 /* UIDelegate.mm in Sources */,
    1054710561                                515BE1B41D5917FF00DD7C68 /* UIGamepad.cpp in Sources */,
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r225223 r225438  
    128128}
    129129
     130void WebChromeClient::didInsertMenuElement(HTMLMenuElement& element)
     131{
     132    m_page.didInsertMenuElement(element);
     133}
     134
     135void WebChromeClient::didRemoveMenuElement(HTMLMenuElement& element)
     136{
     137    m_page.didRemoveMenuElement(element);
     138}
     139
     140void WebChromeClient::didInsertMenuItemElement(HTMLMenuItemElement& element)
     141{
     142    m_page.didInsertMenuItemElement(element);
     143}
     144
     145void WebChromeClient::didRemoveMenuItemElement(HTMLMenuItemElement& element)
     146{
     147    m_page.didRemoveMenuItemElement(element);
     148}
     149
    130150inline WebChromeClient::~WebChromeClient()
    131151{
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h

    r225223 r225438  
    4343    ~WebChromeClient();
    4444
     45    void didInsertMenuElement(WebCore::HTMLMenuElement&);
     46    void didRemoveMenuElement(WebCore::HTMLMenuElement&);
     47    void didInsertMenuItemElement(WebCore::HTMLMenuItemElement&);
     48    void didRemoveMenuItemElement(WebCore::HTMLMenuItemElement&);
     49
    4550    void chromeDestroyed() final;
    4651   
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r225422 r225438  
    153153#include <WebCore/HTMLImageElement.h>
    154154#include <WebCore/HTMLInputElement.h>
     155#include <WebCore/HTMLMenuElement.h>
     156#include <WebCore/HTMLMenuItemElement.h>
    155157#include <WebCore/HTMLOListElement.h>
    156158#include <WebCore/HTMLPlugInElement.h>
     
    224226#include "PlaybackSessionManager.h"
    225227#include "RemoteLayerTreeTransaction.h"
     228#include "TouchBarMenuData.h"
     229#include "TouchBarMenuItemData.h"
    226230#include "VideoFullscreenManager.h"
    227231#include "WKStringCF.h"
     
    51195123}
    51205124
     5125void WebPage::didInsertMenuElement(HTMLMenuElement& element)
     5126{
     5127#if PLATFORM(COCOA)
     5128    sendTouchBarMenuDataAddedUpdate(element);
     5129#else
     5130    ASSERT_UNUSED(element, element);
     5131#endif
     5132}
     5133
     5134void WebPage::didRemoveMenuElement(HTMLMenuElement& element)
     5135{
     5136#if PLATFORM(COCOA)
     5137    sendTouchBarMenuDataRemovedUpdate(element);
     5138#else
     5139    ASSERT_UNUSED(element, element);
     5140#endif
     5141}
     5142
     5143void WebPage::didInsertMenuItemElement(HTMLMenuItemElement& element)
     5144{
     5145#if PLATFORM(COCOA)
     5146    sendTouchBarMenuItemDataAddedUpdate(element);
     5147#else
     5148    ASSERT_UNUSED(element, element);
     5149#endif
     5150}
     5151
     5152void WebPage::didRemoveMenuItemElement(HTMLMenuItemElement& element)
     5153{
     5154#if PLATFORM(COCOA)
     5155    sendTouchBarMenuItemDataRemovedUpdate(element);
     5156#else
     5157    ASSERT_UNUSED(element, element);
     5158#endif
     5159}
     5160
    51215161#if ENABLE(PRIMARY_SNAPSHOTTED_PLUGIN_HEURISTIC)
    51225162static const int primarySnapshottedPlugInSearchLimit = 3000;
     
    53395379    }
    53405380}
     5381
     5382#if PLATFORM(COCOA)
     5383void WebPage::sendTouchBarMenuDataRemovedUpdate(HTMLMenuElement& element)
     5384{
     5385    send(Messages::WebPageProxy::TouchBarMenuDataChanged(TouchBarMenuData { }));
     5386}
     5387
     5388void WebPage::sendTouchBarMenuDataAddedUpdate(HTMLMenuElement& element)
     5389{
     5390    send(Messages::WebPageProxy::TouchBarMenuDataChanged(TouchBarMenuData {element}));
     5391}
     5392
     5393void WebPage::sendTouchBarMenuItemDataAddedUpdate(HTMLMenuItemElement& element)
     5394{
     5395    send(Messages::WebPageProxy::TouchBarMenuItemDataAdded(TouchBarMenuItemData {element}));
     5396}
     5397
     5398void WebPage::sendTouchBarMenuItemDataRemovedUpdate(HTMLMenuItemElement& element)
     5399{
     5400    send(Messages::WebPageProxy::TouchBarMenuItemDataRemoved(TouchBarMenuItemData {element}));
     5401}
     5402#endif
    53415403
    53425404void WebPage::sendPartialEditorStateAndSchedulePostLayoutUpdate()
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r225422 r225438  
    5050#include <WebCore/DictionaryPopupInfo.h>
    5151#include <WebCore/FrameLoaderTypes.h>
     52#include <WebCore/HTMLMenuElement.h>
     53#include <WebCore/HTMLMenuItemElement.h>
    5254#include <WebCore/IntRect.h>
    5355#include <WebCore/IntSizeHash.h>
     
    124126class FrameView;
    125127class GraphicsContext;
     128class HTMLMenuElement;
     129class HTMLMenuItemElement;
    126130class HTMLPlugInElement;
    127131class HTMLPlugInImageElement;
     
    307311    WebCore::KeyboardUIMode keyboardUIMode();
    308312
     313    void didInsertMenuElement(WebCore::HTMLMenuElement&);
     314    void didRemoveMenuElement(WebCore::HTMLMenuElement&);
     315    void didInsertMenuItemElement(WebCore::HTMLMenuItemElement&);
     316    void didRemoveMenuItemElement(WebCore::HTMLMenuItemElement&);
     317
    309318    const String& overrideContentSecurityPolicy() const { return m_overrideContentSecurityPolicy; }
    310319
     
    10371046    void sendEditorStateUpdate();
    10381047
     1048#if PLATFORM(COCOA)
     1049    void sendTouchBarMenuDataAddedUpdate(WebCore::HTMLMenuElement&);
     1050    void sendTouchBarMenuDataRemovedUpdate(WebCore::HTMLMenuElement&);
     1051    void sendTouchBarMenuItemDataAddedUpdate(WebCore::HTMLMenuItemElement&);
     1052    void sendTouchBarMenuItemDataRemovedUpdate(WebCore::HTMLMenuItemElement&);
     1053#endif
     1054
    10391055    void didReceiveWebPageMessage(IPC::Connection&, IPC::Decoder&);
    10401056    void didReceiveSyncWebPageMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&);
Note: See TracChangeset for help on using the changeset viewer.