Bug 143318 - Expose the "Share" menu for text selections on platforms where it's available
Summary: Expose the "Share" menu for text selections on platforms where it's available
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebCore Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Brady Eidson
URL:
Keywords: InRadar
Depends on: 143355
Blocks:
  Show dependency treegraph
 
Reported: 2015-04-01 13:51 PDT by Brady Eidson
Modified: 2015-04-03 02:21 PDT (History)
11 users (show)

See Also:


Attachments
Patch v1 (30.77 KB, patch)
2015-04-01 15:22 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v2 (30.89 KB, patch)
2015-04-01 16:49 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v3 (31.09 KB, patch)
2015-04-02 08:48 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v4 (31.14 KB, patch)
2015-04-02 08:50 PDT, Brady Eidson
darin: review-
darin: commit-queue-
Details | Formatted Diff | Diff
Patch v5 (47.26 KB, patch)
2015-04-02 11:48 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v6 (50.70 KB, patch)
2015-04-02 12:00 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v7 (50.68 KB, patch)
2015-04-02 12:33 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v8 (49.98 KB, patch)
2015-04-02 13:56 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff
Patch v8.1 (49.98 KB, patch)
2015-04-02 14:02 PDT, Brady Eidson
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Brady Eidson 2015-04-01 13:51:58 PDT
Expose the "Share" menu for text selections on platforms where it's available

rdar://problem/20034174
Comment 1 Brady Eidson 2015-04-01 15:22:51 PDT
Created attachment 249947 [details]
Patch v1
Comment 2 WebKit Commit Bot 2015-04-01 15:24:57 PDT
Attachment 249947 [details] did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:102:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Brady Eidson 2015-04-01 16:49:42 PDT
Created attachment 249952 [details]
Patch v2
Comment 4 Brady Eidson 2015-04-02 08:48:08 PDT
Created attachment 249981 [details]
Patch v3
Comment 5 Brady Eidson 2015-04-02 08:50:31 PDT
Created attachment 249982 [details]
Patch v4
Comment 6 Anders Carlsson 2015-04-02 09:08:50 PDT
Comment on attachment 249982 [details]
Patch v4

View in context: https://bugs.webkit.org/attachment.cgi?id=249982&action=review

> Source/WebKit2/Shared/API/c/WKContextMenuItemTypes.h:124
> +    kWKContextMenuItemTagShareMenu = 5001,

Why does this need to be 5001?

> Source/WebKit2/Shared/API/c/WKSharedAPICast.h:508
> +        if (static_cast<WKContextMenuItemTag>(action) == kWKContextMenuItemTagShareMenu)
> +            return kWKContextMenuItemTagShareMenu;

Instead of this, I think you should add the corresponding WebCore enum.

> Source/WebKit2/Shared/API/c/WKSharedAPICast.h:699
> +    case kWKContextMenuItemTagShareMenu:
> +        return static_cast<WebCore::ContextMenuAction>(tag);

Same comment here.

> Source/WebKit2/Shared/WebContextMenuItemData.cpp:88
> +    m_nativeContextMenuItem = NativeContextMenuItem::create(item);

Is WebContextMenuItemData something we send over the wire? If so, we shouldn't add native items to it.
Comment 7 Brady Eidson 2015-04-02 09:11:36 PDT
(In reply to comment #6)
> Comment on attachment 249982 [details]
> Patch v4
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=249982&action=review
> 
> > Source/WebKit2/Shared/API/c/WKContextMenuItemTypes.h:124
> > +    kWKContextMenuItemTagShareMenu = 5001,
> 
> Why does this need to be 5001?

Because the tag is only relevant in WK2-land and I was half heartedly trying to avoid adding it to WebCore also.

So it follows...

> 
> > Source/WebKit2/Shared/API/c/WKSharedAPICast.h:508
> > +        if (static_cast<WKContextMenuItemTag>(action) == kWKContextMenuItemTagShareMenu)
> > +            return kWKContextMenuItemTagShareMenu;
> 
> Instead of this, I think you should add the corresponding WebCore enum.

If I do that, it'll just be another tag.

> > Source/WebKit2/Shared/WebContextMenuItemData.cpp:88
> > +    m_nativeContextMenuItem = NativeContextMenuItem::create(item);
> 
> Is WebContextMenuItemData something we send over the wire? If so, we
> shouldn't add native items to it.

It does go over the wire.

Adding stuff to the WebContextMenuItem directly, however, is going to be a much more invasive change. Which is why I didn't.

But I guess it's The Right Thing To Do™
Comment 8 Darin Adler 2015-04-02 09:32:15 PDT
Comment on attachment 249982 [details]
Patch v4

View in context: https://bugs.webkit.org/attachment.cgi?id=249982&action=review

review- because it’s not compiling on GTK and EFL; some comments about possible improvements too.

> Source/WebCore/page/ContextMenuClient.h:66
> +        virtual ContextMenuItem shareSelectedTextMenuItem(const String& selectedText)
> +        {
> +            return ContextMenuItem::shareSelectedTextMenuItem(selectedText);
> +        }

I think it’s better to not have the multi-line function body here in the class definition; makes the class harder to read. We can put it here in the header if we do want it to be inlined. Or we can put it in a .cpp file, maybe Page.cpp might be fine since the page object is where the client lives.

> Source/WebCore/page/ContextMenuController.cpp:920
> +                if (!selectedString.isEmpty() && ContextMenuItem::supportsShareMenu()) {
> +                    ContextMenuItem ShareItem(m_client.shareSelectedTextMenuItem(selectedString));
> +                    appendItem(ShareItem, m_contextMenu.get());
> +                    appendItem(*separatorItem(), m_contextMenu.get());
> +
> +                    m_context.setSelectedText(selectedString);
> +                }

I would consider structuring this differently. I think the best way to do this would be to have the shareSelectedTextMenuItem function return an empty menu item if there is none, and make a helper function that appends the item plus a separator only if the item passed is non-null. We’d also call setSelectedText unconditionally, not just if the selected string is non-empty.

I think it’s strange that we are using these capitalized local variables for the menu items, and this one in particular doesn’t seem to need a local variable at all. It would read better as a one-liner.

> Source/WebCore/platform/ContextMenuItem.h:213
> +#if PLATFORM(COCOA)
> +        static bool supportsShareMenu();
> +        WEBCORE_EXPORT static ContextMenuItem shareSelectedTextMenuItem(const String&);
> +#else
> +        static bool supportsShareMenu() { return false; }
> +#endif

I don’t think we need supportsShareMenu for non-Cocoa platforms. Another way to do this might just to make shareSelectedTextMenuItem return a null ContextMenuItem instead of having a separate function returning a boolean.

If we did need this function for non-Cocoa platforms, I’d rather have this at the bottom of the file:

    #if !PLATFORM(COCOA)

    bool ContextMenuItem::supportsShareMenu()
    {
        return true;
    }

    #endif

And then leave the supportsShareMenu function unconditional inside the class definition. Conditionals are getting little out of hand in this header and I think we should strive to minimize them in the class definition.

It seems this should be PLATFORM(MAC), not PLATFORM(COCOA), by the way. Or maybe USE(APPKIT).

> Source/WebCore/platform/mac/ContextMenuItemMac.mm:106
> +NSMenuItem* ContextMenuItem::getPlatformDescription() const

Wrong formatting of the NSMenuItem* here; move the * please.

> Source/WebCore/platform/mac/ContextMenuItemMac.mm:205
> +    NSMenuItem *nsItem = [NSMenuItem standardShareMenuItemWithItems:@[ (NSString *)selectedText ]];
> +    return ContextMenuItem(nsItem);

I don’t think we need this local variable. Lets write this as a one-liner. Might not even need the explicit construction of ContextMenuItem.

> Source/WebKit2/Shared/NativeContextMenuItem.h:47
> +class NativeContextMenuItem : public RefCounted<NativeContextMenuItem> {

I think this is a single-ownership object, so I suggest we use unique_ptr instead of RefPtr and not do all the RefCounted stuff.

> Source/WebKit2/Shared/NativeContextMenuItem.h:49
> +    static PassRefPtr<NativeContextMenuItem> create(const WebCore::ContextMenuItem& coreItem)

Should return a Ref, not a PassRefPtr.

> Source/WebKit2/Shared/NativeContextMenuItem.h:58
> +#if PLATFORM(COCOA)
> +    NSMenuItem *nsMenuItem() { return m_nsMenuItem.get(); }
> +#endif

This needs to be USE(APPKIT), not PLATFORM(COCOA). There is no NSMenuItem on iOS.

> Source/WebKit2/Shared/NativeContextMenuItem.h:61
> +    NativeContextMenuItem(const WebCore::ContextMenuItem& coreItem);

No need for the argument name here.

> Source/WebKit2/WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:100
> +    return ContextMenuItem(SubmenuType, toImpl(kWKContextMenuItemTagShareMenu), StringImpl::empty());

StringImpl::empty() is not right here; although it will work, I think you just want emptyString().
Comment 9 Brady Eidson 2015-04-02 10:18:16 PDT
(In reply to comment #8)
> Comment on attachment 249982 [details]
> Patch v4
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=249982&action=review
> 
> review- because it’s not compiling on GTK and EFL; some comments about
> possible improvements too.
> 
> > Source/WebCore/page/ContextMenuClient.h:66
> > +        virtual ContextMenuItem shareSelectedTextMenuItem(const String& selectedText)
> > +        {
> > +            return ContextMenuItem::shareSelectedTextMenuItem(selectedText);
> > +        }
> 
> I think it’s better to not have the multi-line function body here in the
> class definition; makes the class harder to read. We can put it here in the
> header if we do want it to be inlined. Or we can put it in a .cpp file,
> maybe Page.cpp might be fine since the page object is where the client lives.

I think it should be inlined. I can make it a single line.

> 
> > Source/WebCore/page/ContextMenuController.cpp:920
> > +                if (!selectedString.isEmpty() && ContextMenuItem::supportsShareMenu()) {
> > +                    ContextMenuItem ShareItem(m_client.shareSelectedTextMenuItem(selectedString));
> > +                    appendItem(ShareItem, m_contextMenu.get());
> > +                    appendItem(*separatorItem(), m_contextMenu.get());
> > +
> > +                    m_context.setSelectedText(selectedString);
> > +                }
> 
> I would consider structuring this differently. I think the best way to do
> this would be to have the shareSelectedTextMenuItem function return an empty
> menu item if there is none, and make a helper function that appends the item
> plus a separator only if the item passed is non-null. We’d also call
> setSelectedText unconditionally, not just if the selected string is
> non-empty.

You just described my first swipe at this. Unfortunately, ContextMenuItems have no concept of "null", and they are also such a cross-platform mess that it quickly became an out-of-scope project to clean them up.

I agree this would be the best structure in the future!

> I think it’s strange that we are using these capitalized local variables for
> the menu items, and this one in particular doesn’t seem to need a local
> variable at all. It would read better as a one-liner.

I agree it's strange we use these capitalized local variables, but I would've felt much worse breaking with the established style of the file.

I agree it would read better as a one liner without the local variable, but because appendItem takes a ContextMenuItem&, that doesn't compile:
...Source/WebCore/page/ContextMenuController.cpp:916:32: Non-const lvalue reference to type 'WebCore::ContextMenuItem' cannot bind to a temporary of type 'WebCore::ContextMenuItem'

And that explains why there's all these temporaries in the file in the first place.

> > Source/WebCore/platform/ContextMenuItem.h:213
> > +#if PLATFORM(COCOA)
> > +        static bool supportsShareMenu();
> > +        WEBCORE_EXPORT static ContextMenuItem shareSelectedTextMenuItem(const String&);
> > +#else
> > +        static bool supportsShareMenu() { return false; }
> > +#endif
> 
> I don’t think we need supportsShareMenu for non-Cocoa platforms. Another way
> to do this might just to make shareSelectedTextMenuItem return a null
> ContextMenuItem instead of having a separate function returning a boolean.

Again, refer back to the previous comment about a null ContextMenuItem - Unfortunately there is no such thing, and it's a non-trivial cleanup project to implement one. :(

> If we did need this function for non-Cocoa platforms, I’d rather have this
> at the bottom of the file:
> 
>     #if !PLATFORM(COCOA)
> 
>     bool ContextMenuItem::supportsShareMenu()
>     {
>         return true;
>     }
> 
>     #endif
> 
> And then leave the supportsShareMenu function unconditional inside the class
> definition. Conditionals are getting little out of hand in this header and I
> think we should strive to minimize them in the class definition.

This makes sense and it is now done.


> > Source/WebCore/platform/mac/ContextMenuItemMac.mm:106
> > +NSMenuItem* ContextMenuItem::getPlatformDescription() const
> 
> Wrong formatting of the NSMenuItem* here; move the * please.

That's my tendency to follow established style within a file. Will fix all uses.

> > Source/WebCore/platform/mac/ContextMenuItemMac.mm:205
> > +    NSMenuItem *nsItem = [NSMenuItem standardShareMenuItemWithItems:@[ (NSString *)selectedText ]];
> > +    return ContextMenuItem(nsItem);
> 
> I don’t think we need this local variable. Lets write this as a one-liner.
> Might not even need the explicit construction of ContextMenuItem.

This changed a bit based on Ander's feedback, and needs to be a multi-liner, but a different multi-liner.

> 
> > Source/WebKit2/Shared/NativeContextMenuItem.h:47
> > +class NativeContextMenuItem : public RefCounted<NativeContextMenuItem> {
> 
> I think this is a single-ownership object, so I suggest we use unique_ptr
> instead of RefPtr and not do all the RefCounted stuff.

In the current version of the patch, the NativeContextMenuItem was passed around to multiple different WebContextMenuItemDatas and therefore couldn't be uniqued.

In the new version, it is truly owned by a single WebContextMenuItem and can be uniqued.

> > Source/WebKit2/WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:100
> > +    return ContextMenuItem(SubmenuType, toImpl(kWKContextMenuItemTagShareMenu), StringImpl::empty());
> 
> StringImpl::empty() is not right here; although it will work, I think you
> just want emptyString().

I originally used ASCIILiteral(""), because it was late at night. Guess what the compiler recommended I use instead?  ;)

I wonder if there's a reason the error message encourages StringImpl::empty instead of emptyString()!
Comment 10 Brady Eidson 2015-04-02 11:48:57 PDT
Created attachment 249999 [details]
Patch v5
Comment 11 WebKit Commit Bot 2015-04-02 11:51:17 PDT
Attachment 249999 [details] did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 12 Brady Eidson 2015-04-02 11:59:43 PDT
Style bot is full of crap.

Attempting build fixes.
Comment 13 Brady Eidson 2015-04-02 12:00:28 PDT
Created attachment 250002 [details]
Patch v6

One attempt to fix EFL/GTK builds
Comment 14 WebKit Commit Bot 2015-04-02 12:01:35 PDT
Attachment 250002 [details] did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 15 Brady Eidson 2015-04-02 12:33:46 PDT
Created attachment 250003 [details]
Patch v7

At this point I'm going to stop working on the WK2 build failures for the other ports, but this was apparently a boneheaded move in WebCore - So v7 is an attempt to fix that.
Comment 16 WebKit Commit Bot 2015-04-02 12:35:17 PDT
Attachment 250003 [details] did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 17 Brady Eidson 2015-04-02 13:44:20 PDT
Will fix windows build.
Comment 18 Brady Eidson 2015-04-02 13:56:23 PDT
Created attachment 250005 [details]
Patch v8
Comment 19 Brady Eidson 2015-04-02 14:02:09 PDT
Created attachment 250006 [details]
Patch v8.1
Comment 20 WebKit Commit Bot 2015-04-02 14:03:31 PDT
Attachment 250006 [details] did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:308:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 21 WebKit Commit Bot 2015-04-02 15:41:02 PDT
Comment on attachment 250006 [details]
Patch v8.1

Clearing flags on attachment: 250006

Committed r182293: <http://trac.webkit.org/changeset/182293>
Comment 22 WebKit Commit Bot 2015-04-02 15:41:07 PDT
All reviewed patches have been landed.  Closing bug.
Comment 23 Brent Fulgham 2015-04-02 17:35:01 PDT
This broke other bots (as shown by EWS):

FAILED: /usr/lib/ccache/g++-4.8   -DBUILDING_GTK__=1 -DBUILDING_WEBKIT -DBUILDING_WITH_CMAKE=1 -DDATA_DIR=\"share\" -DDEVELOPMENT_BUILD=1 -DENABLE_3D_RENDERING=1 -DENABLE_PLUGIN_PROCESS=1 -DENABLE_PLUGIN_PROCESS_GTK2=1 -DGETTEXT_PACKAGE=\"WebKit2GTK-4.0\" -DHAVE_CONFIG_H=1 -DLIBDIR=\"/usr/local/lib/x86_64-linux-gnu\" -DLIBEXECDIR=\"/usr/local/libexec/webkit2gtk-4.0\" -DMOZ_X11=1 -DPACKAGE_LOCALE_DIR=\"/usr/local/share/locale\" -DUSER_AGENT_GTK_MAJOR_VERSION=601 -DUSER_AGENT_GTK_MINOR_VERSION=1 -DWEBKIT2_COMPILATION -DWEBKITGTK_API_VERSION_STRING=\"4.0\" -DWTF_PLATFORM_X11=1 -DWTF_USE_3D_GRAPHICS=1 -DWTF_USE_EGL=1 -DWTF_USE_GLX=1 -DWTF_USE_GSTREAMER -DWTF_USE_GSTREAMER_MPEGTS -DWTF_USE_LIBNOTIFY=0 -DWTF_USE_OPENGL=1 -DWTF_USE_OPENWEBRTC -DWTF_USE_REDIRECTED_XCOMPOSITE_WINDOW=1 -DWTF_USE_TEXTURE_MAPPER=1 -DWTF_USE_TEXTURE_MAPPER_GL=1 -DWTF_USE_WEBAUDIO_GSTREAMER -DWebKit2_EXPORTS -DXP_UNIX -pipe  -std=c++11 -Wno-unused-parameter -O3 -DNDEBUG -fno-exceptions -fno-strict-aliasing -fno-rtti -fPIC -I../../Source/WebKit2/Platform -I../../Source/WebKit2/Shared -I../../Source/WebKit2/Shared/API/c -I../../Source/WebKit2/UIProcess/API/C -I../../Source/WebKit2/WebProcess/InjectedBundle -I../../Source/WebKit2/WebProcess/InjectedBundle/API/c -IDerivedSources -IDerivedSources/InjectedBundle -IDerivedSources/webkitdom -IDerivedSources/ForwardingHeaders -IDerivedSources/ForwardingHeaders/webkit2gtk -IDerivedSources/ForwardingHeaders/webkit2gtk-webextension -IDerivedSources/webkit2gtk/webkit2 -IDerivedSources/webkit2gtk -I../../Source/JavaScriptCore/llint -I../../Source/WebKit2 -I../../Source/WebKit2/DatabaseProcess -I../../Source/WebKit2/DatabaseProcess/IndexedDB -I../../Source/WebKit2/DatabaseProcess/IndexedDB/sqlite -I../../Source/WebKit2/NetworkProcess -I../../Source/WebKit2/NetworkProcess/FileAPI -I../../Source/WebKit2/NetworkProcess/cache -I../../Source/WebKit2/Platform/IPC -I../../Source/WebKit2/PluginProcess -I../../Source/WebKit2/Shared/API -I../../Source/WebKit2/Shared/Authentication -I../../Source/WebKit2/Shared/CoreIPCSupport -I../../Source/WebKit2/Shared/Databases -I../../Source/WebKit2/Shared/Databases/IndexedDB -I../../Source/WebKit2/Shared/Downloads -I../../Source/WebKit2/Shared/FileAPI -I../../Source/WebKit2/Shared/Network -I../../Source/WebKit2/Shared/Network/CustomProtocols -I../../Source/WebKit2/Shared/Plugins -I../../Source/WebKit2/Shared/Plugins/Netscape -I../../Source/WebKit2/Shared/Plugins/Netscape/x11 -I../../Source/WebKit2/Shared/WebsiteData -I../../Source/WebKit2/UIProcess -I../../Source/WebKit2/UIProcess/API -I../../Source/WebKit2/UIProcess/API/cpp -I../../Source/WebKit2/UIProcess/Authentication -I../../Source/WebKit2/UIProcess/Databases -I../../Source/WebKit2/UIProcess/Downloads -I../../Source/WebKit2/UIProcess/InspectorServer -I../../Source/WebKit2/UIProcess/Launcher -I../../Source/WebKit2/UIProcess/Network -I../../Source/WebKit2/UIProcess/Network/CustomProtocols -I../../Source/WebKit2/UIProcess/Notifications -I../../Source/WebKit2/UIProcess/Plugins -I../../Source/WebKit2/UIProcess/Storage -I../../Source/WebKit2/UIProcess/UserContent -I../../Source/WebKit2/UIProcess/WebsiteData -I../../Source/WebKit2/WebProcess -I../../Source/WebKit2/WebProcess/ApplicationCache -I../../Source/WebKit2/WebProcess/Battery -I../../Source/WebKit2/WebProcess/Cookies -I../../Source/WebKit2/WebProcess/Databases -I../../Source/WebKit2/WebProcess/Databases/IndexedDB -I../../Source/WebKit2/WebProcess/FileAPI -I../../Source/WebKit2/WebProcess/FullScreen -I../../Source/WebKit2/WebProcess/Geolocation -I../../Source/WebKit2/WebProcess/IconDatabase -I../../Source/WebKit2/WebProcess/InjectedBundle/API -I../../Source/WebKit2/WebProcess/InjectedBundle/DOM -I../../Source/WebKit2/WebProcess/Launching -I../../Source/WebKit2/WebProcess/MediaCache -I../../Source/WebKit2/WebProcess/MediaStream -I../../Source/WebKit2/WebProcess/Network -I../../Source/WebKit2/WebProcess/Notifications -I../../Source/WebKit2/WebProcess/OriginData -I../../Source/WebKit2/WebProcess/Plugins -I../../Source/WebKit2/WebProcess/Plugins/Netscape -I../../Source/WebKit2/WebProcess/ResourceCache -I../../Source/WebKit2/WebProcess/Storage -I../../Source/WebKit2/WebProcess/UserContent -I../../Source/WebKit2/WebProcess/WebCoreSupport -I../../Source/WebKit2/WebProcess/WebPage -I../../Source/WebCore -I../../Source/WebCore/Modules/battery -I../../Source/WebCore/Modules/mediastream -I../../Source/WebCore/Modules/networkinfo -I../../Source/WebCore/Modules/notifications -I../../Source/WebCore/Modules/streams -I../../Source/WebCore/Modules/vibration -I../../Source/WebCore/Modules/webdatabase -I../../Source/WebCore/accessibility -I../../Source/WebCore/bindings/js -I../../Source/WebCore/bindings -I../../Source/WebCore/bridge -I../../Source/WebCore/bridge/jsc -I../../Source/WebCore/css -I../../Source/WebCore/dom -I../../Source/WebCore/dom/default -I../../Source/WebCore/editing -I../../Source/WebCore/fileapi -I../../Source/WebCore/history -I../../Source/WebCore/html -I../../Source/WebCore/html/shadow -I../../Source/WebCore/html/track -I../../Source/WebCore/inspector -I../../Source/WebCore/loader -I../../Source/WebCore/loader/archive -I../../Source/WebCore/loader/icon -I../../Source/WebCore/loader/cache -I../../Source/WebCore/page -I../../Source/WebCore/page/animation -I../../Source/WebCore/page/scrolling -I../../Source/WebCore/platform -I../../Source/WebCore/platform/animation -I../../Source/WebCore/platform/audio -I../../Source/WebCore/platform/graphics -I../../Source/WebCore/platform/graphics/filters -I../../Source/WebCore/platform/graphics/harfbuzz -I../../Source/WebCore/platform/graphics/harfbuzz/ng -I../../Source/WebCore/platform/graphics/surfaces -I../../Source/WebCore/platform/graphics/texmap -I../../Source/WebCore/platform/graphics/transforms -I../../Source/WebCore/platform/mediastream -I../../Source/WebCore/platform/network -I../../Source/WebCore/platform/sql -I../../Source/WebCore/platform/text -I../../Source/WebCore/plugins -I../../Source/WebCore/rendering -I../../Source/WebCore/rendering/line -I../../Source/WebCore/rendering/shapes -I../../Source/WebCore/rendering/style -I../../Source/WebCore/storage -I../../Source/WebCore/style -I../../Source/WebCore/svg -I../../Source/WebCore/svg/graphics -I../../Source/WebCore/svg/properties -I../../Source/JavaScriptCore -I../../Source/JavaScriptCore/ForwardingHeaders -I../../Source/JavaScriptCore/API -I../../Source/JavaScriptCore/assembler -I../../Source/JavaScriptCore/bytecode -I../../Source/JavaScriptCore/bytecompiler -I../../Source/JavaScriptCore/collector/handles -I../../Source/JavaScriptCore/dfg -I../../Source/JavaScriptCore/disassembler -I../../Source/JavaScriptCore/heap -I../../Source/JavaScriptCore/interpreter -I../../Source/JavaScriptCore/jit -I../../Source/JavaScriptCore/parser -I../../Source/JavaScriptCore/profiler -I../../Source/JavaScriptCore/runtime -I../../Source/WTF -IDerivedSources/JavaScriptCore -IDerivedSources/WebCore -IDerivedSources/WebKit2 -IDerivedSources/WebKit2/include -I. -I../../Source -I../../Source/ThirdParty/ANGLE -I../../Source/ThirdParty/ANGLE/include/KHR -I../../Source/WebKit2/PluginProcess/unix -I../../Source/WebCore/platform/cairo -I../../Source/WebCore/platform/gtk -I../../Source/WebCore/platform/graphics/cairo -I../../Source/WebCore/platform/graphics/opentype -I../../Source/WebCore/platform/network/soup -I../../Source/WebCore/platform/text/enchant -I../../Source/WebKit2/DatabaseProcess/unix -I../../Source/WebKit2/NetworkProcess/gtk -I../../Source/WebKit2/NetworkProcess/unix -I../../Source/WebKit2/Shared/API/c/gtk -I../../Source/WebKit2/Shared/Network/CustomProtocols/soup -I../../Source/WebKit2/Shared/Downloads/soup -I../../Source/WebKit2/Shared/gtk -I../../Source/WebKit2/Shared/soup -I../../Source/WebKit2/Shared/unix -I../../Source/WebKit2/UIProcess/API/C/cairo -I../../Source/WebKit2/UIProcess/API/C/gtk -I../../Source/WebKit2/UIProcess/API/C/soup -I../../Source/WebKit2/UIProcess/API/cpp/gtk -I../../Source/WebKit2/UIProcess/API/gtk -I../../Source/WebKit2/UIProcess/Network/CustomProtocols/soup -I../../Source/WebKit2/UIProcess/Plugins/gtk -I../../Source/WebKit2/UIProcess/gtk -I../../Source/WebKit2/UIProcess/soup -I../../Source/WebKit2/WebProcess/InjectedBundle/API/gtk -I../../Source/WebKit2/WebProcess/gtk -I../../Source/WebKit2/WebProcess/soup -I../../Source/WebKit2/WebProcess/unix -I../../Source/WebKit2/WebProcess/WebCoreSupport/gtk -I../../Source/WebKit2/WebProcess/WebCoreSupport/soup -I../../Source/WebKit2/WebProcess/WebPage/atk -I../../Source/WebKit2/WebProcess/WebPage/gtk -I../../Source/WTF/wtf/gtk -I../../Source/WTF/wtf/gobject -I../DependenciesGTK/Root/include/cairo -I/usr/include/enchant -I../DependenciesGTK/Root/include/libxml2 -I../DependenciesGTK/Root/include/glib-2.0 -I../DependenciesGTK/Root/lib64/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I../DependenciesGTK/Root/include/harfbuzz -I../DependenciesGTK/Root/include/libsoup-2.4 -I../DependenciesGTK/Root/include/gtk-3.0 -I../DependenciesGTK/Root/include/atk-1.0 -I../DependenciesGTK/Root/include/at-spi2-atk/2.0 -I../DependenciesGTK/Root/include/gio-unix-2.0 -I../DependenciesGTK/Root/include/gdk-pixbuf-2.0 -I../DependenciesGTK/Root/include/freetype2 -I../DependenciesGTK/Root/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/libpng12 -I/usr/include/libdrm -I../DependenciesGTK/Root/include/gtk-3.0/unix-print    -Wall -Wextra -Wcast-align -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wundef -Wwrite-strings  -include /home/slave/webkitgtk/gtk-linux-64-release/build/Source/WebKit2/WebKit2Prefix.h -MMD -MT Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/gtk/WebKitContextMenuClient.cpp.o -MF "Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/gtk/WebKitContextMenuClient.cpp.o.d" -o Source/WebKit2/CMakeFiles/WebKit2.dir/UIProcess/API/gtk/WebKitContextMenuClient.cpp.o -c ../../Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.cpp
../../Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.cpp:37:10: error: ‘bool ContextMenuClient::getContextMenuFromProposedMenu(WebKit::WebPageProxy&, const WTF::Vector<WebKit::WebContextMenuItemData>&, WTF::Vector<WebKit::WebContextMenuItemData>&, const WebKit::WebHitTestResult::Data&, API::Object*)’ marked override, but does not override
     bool getContextMenuFromProposedMenu(WebPageProxy&, const Vector<WebContextMenuItemData>& proposedMenu, Vector<WebContextMenuItemData>&, const WebHitTestResult::Data& hitTestResultData, API::Object* userData) override
Comment 24 WebKit Commit Bot 2015-04-02 17:49:59 PDT
Re-opened since this is blocked by bug 143355
Comment 25 Csaba Osztrogonác 2015-04-02 22:44:03 PDT
Relanded in http://trac.webkit.org/changeset/182303.
( But the build is still broken. :( )
Comment 26 Csaba Osztrogonác 2015-04-02 23:37:43 PDT
buildfix landed in http://trac.webkit.org/changeset/182306
Comment 27 Csaba Osztrogonác 2015-04-02 23:51:47 PDT
GTK build is still broken:

../../Source/WebKit2/UIProcess/API/gtk/WebKitContextMenuClient.cpp:37:10: error: ‘bool ContextMenuClient::getContextMenuFromProposedMenu(WebKit::WebPageProxy&, const WTF::Vector<WebKit::WebContextMenuItemData>&, WTF::Vector<WebKit::WebContextMenuItemData>&, const WebKit::WebHitTestResult::Data&, API::Object*)’ marked override, but does not override
     bool getContextMenuFromProposedMenu(WebPageProxy&, const Vector<WebContextMenuItemData>& proposedMenu, Vector<WebContextMenuItemData>&, const WebHitTestResult::Data& hitTestResultData, API::Object* userData) override
          ^
Comment 28 Philippe Normand 2015-04-03 02:21:39 PDT
GTK build fix: http://trac.webkit.org/changeset/182310