mac: Implement webContents.startDrag

This commit is contained in:
Cheng Zhao 2016-07-03 12:26:43 +09:00
parent 74ebbf9c78
commit 13c668f22b
6 changed files with 106 additions and 0 deletions

View file

@ -17,6 +17,7 @@
#include "atom/browser/lib/bluetooth_chooser.h"
#include "atom/browser/native_window.h"
#include "atom/browser/net/atom_network_delegate.h"
#include "atom/browser/ui/drag_util.h"
#include "atom/browser/web_contents_permission_helper.h"
#include "atom/browser/web_contents_preferences.h"
#include "atom/browser/web_view_guest_delegate.h"
@ -1205,6 +1206,13 @@ void WebContents::EndFrameSubscription() {
view->EndFrameSubscription();
}
void WebContents::StartDrag(const base::FilePath& file,
mate::Handle<NativeImage> image) {
base::MessageLoop::ScopedNestableTaskAllower allow(
base::MessageLoop::current());
DragItem(file, image->image(), web_contents()->GetNativeView());
}
void WebContents::OnCursorChange(const content::WebCursor& cursor) {
content::WebCursor::CursorInfo info;
cursor.GetCursorInfo(&info);
@ -1324,6 +1332,7 @@ void WebContents::BuildPrototype(v8::Isolate* isolate,
.SetMethod("beginFrameSubscription",
&WebContents::BeginFrameSubscription)
.SetMethod("endFrameSubscription", &WebContents::EndFrameSubscription)
.SetMethod("startDrag", &WebContents::StartDrag)
.SetMethod("setSize", &WebContents::SetSize)
.SetMethod("isGuest", &WebContents::IsGuest)
.SetMethod("getType", &WebContents::GetType)

View file

@ -39,6 +39,8 @@ class WebViewGuestDelegate;
namespace api {
class NativeImage;
class WebContents : public mate::TrackableObject<WebContents>,
public CommonWebContentsDelegate,
public content::WebContentsObserver {
@ -142,6 +144,9 @@ class WebContents : public mate::TrackableObject<WebContents>,
void BeginFrameSubscription(mate::Arguments* args);
void EndFrameSubscription();
// Dragging native items.
void StartDrag(const base::FilePath& file, mate::Handle<NativeImage> image);
// Methods for creating <webview>.
void SetSize(const SetSizeParams& params);
bool IsGuest() const;