OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 14 matching lines...) Expand all Loading... |
25 | 25 |
26 #include "core/clipboard/DataTransfer.h" | 26 #include "core/clipboard/DataTransfer.h" |
27 | 27 |
28 #include "core/HTMLNames.h" | 28 #include "core/HTMLNames.h" |
29 #include "core/clipboard/DataObject.h" | 29 #include "core/clipboard/DataObject.h" |
30 #include "core/clipboard/DataTransferItem.h" | 30 #include "core/clipboard/DataTransferItem.h" |
31 #include "core/clipboard/DataTransferItemList.h" | 31 #include "core/clipboard/DataTransferItemList.h" |
32 #include "core/editing/EphemeralRange.h" | 32 #include "core/editing/EphemeralRange.h" |
33 #include "core/editing/FrameSelection.h" | 33 #include "core/editing/FrameSelection.h" |
34 #include "core/editing/serializers/Serialization.h" | 34 #include "core/editing/serializers/Serialization.h" |
35 #include "core/fetch/ImageResource.h" | 35 #include "core/fetch/ImageResourceContent.h" |
36 #include "core/fileapi/FileList.h" | 36 #include "core/fileapi/FileList.h" |
37 #include "core/frame/LocalFrame.h" | 37 #include "core/frame/LocalFrame.h" |
38 #include "core/html/HTMLImageElement.h" | 38 #include "core/html/HTMLImageElement.h" |
39 #include "core/html/TextControlElement.h" | 39 #include "core/html/TextControlElement.h" |
40 #include "core/layout/LayoutImage.h" | 40 #include "core/layout/LayoutImage.h" |
41 #include "core/layout/LayoutObject.h" | 41 #include "core/layout/LayoutObject.h" |
42 #include "platform/DragImage.h" | 42 #include "platform/DragImage.h" |
43 #include "platform/clipboard/ClipboardMimeTypes.h" | 43 #include "platform/clipboard/ClipboardMimeTypes.h" |
44 #include "platform/clipboard/ClipboardUtilities.h" | 44 #include "platform/clipboard/ClipboardUtilities.h" |
45 #include "platform/network/mime/MIMETypeRegistry.h" | 45 #include "platform/network/mime/MIMETypeRegistry.h" |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 | 221 |
222 void DataTransfer::clearDragImage() { | 222 void DataTransfer::clearDragImage() { |
223 if (!canSetDragImage()) | 223 if (!canSetDragImage()) |
224 return; | 224 return; |
225 | 225 |
226 m_dragImage = nullptr; | 226 m_dragImage = nullptr; |
227 m_dragLoc = IntPoint(); | 227 m_dragLoc = IntPoint(); |
228 m_dragImageElement = nullptr; | 228 m_dragImageElement = nullptr; |
229 } | 229 } |
230 | 230 |
231 void DataTransfer::setDragImageResource(ImageResource* img, | 231 void DataTransfer::setDragImageResource(ImageResourceContent* img, |
232 const IntPoint& loc) { | 232 const IntPoint& loc) { |
233 setDragImage(img, 0, loc); | 233 setDragImage(img, 0, loc); |
234 } | 234 } |
235 | 235 |
236 void DataTransfer::setDragImageElement(Node* node, const IntPoint& loc) { | 236 void DataTransfer::setDragImageElement(Node* node, const IntPoint& loc) { |
237 setDragImage(0, node, loc); | 237 setDragImage(0, node, loc); |
238 } | 238 } |
239 | 239 |
240 std::unique_ptr<DragImage> DataTransfer::createDragImage( | 240 std::unique_ptr<DragImage> DataTransfer::createDragImage( |
241 IntPoint& loc, | 241 IntPoint& loc, |
242 LocalFrame* frame) const { | 242 LocalFrame* frame) const { |
243 if (m_dragImageElement) { | 243 if (m_dragImageElement) { |
244 loc = m_dragLoc; | 244 loc = m_dragLoc; |
245 | 245 |
246 return frame->nodeImage(*m_dragImageElement); | 246 return frame->nodeImage(*m_dragImageElement); |
247 } | 247 } |
248 if (m_dragImage) { | 248 if (m_dragImage) { |
249 loc = m_dragLoc; | 249 loc = m_dragLoc; |
250 return DragImage::create(m_dragImage->getImage()); | 250 return DragImage::create(m_dragImage->getImage()); |
251 } | 251 } |
252 return nullptr; | 252 return nullptr; |
253 } | 253 } |
254 | 254 |
255 static ImageResource* getImageResource(Element* element) { | 255 static ImageResourceContent* getImageResourceContent(Element* element) { |
256 // Attempt to pull ImageResource from element | 256 // Attempt to pull ImageResourceContent from element |
257 ASSERT(element); | 257 ASSERT(element); |
258 LayoutObject* layoutObject = element->layoutObject(); | 258 LayoutObject* layoutObject = element->layoutObject(); |
259 if (!layoutObject || !layoutObject->isImage()) | 259 if (!layoutObject || !layoutObject->isImage()) |
260 return 0; | 260 return 0; |
261 | 261 |
262 LayoutImage* image = toLayoutImage(layoutObject); | 262 LayoutImage* image = toLayoutImage(layoutObject); |
263 if (image->cachedImage() && !image->cachedImage()->errorOccurred()) | 263 if (image->cachedImage() && !image->cachedImage()->errorOccurred()) |
264 return image->cachedImage(); | 264 return image->cachedImage(); |
265 | 265 |
266 return 0; | 266 return 0; |
267 } | 267 } |
268 | 268 |
269 static void writeImageToDataObject(DataObject* dataObject, | 269 static void writeImageToDataObject(DataObject* dataObject, |
270 Element* element, | 270 Element* element, |
271 const KURL& url) { | 271 const KURL& url) { |
272 // Shove image data into a DataObject for use as a file | 272 // Shove image data into a DataObject for use as a file |
273 ImageResource* cachedImage = getImageResource(element); | 273 ImageResourceContent* cachedImage = getImageResourceContent(element); |
274 if (!cachedImage || !cachedImage->getImage() || !cachedImage->isLoaded()) | 274 if (!cachedImage || !cachedImage->getImage() || !cachedImage->isLoaded()) |
275 return; | 275 return; |
276 | 276 |
277 RefPtr<SharedBuffer> imageBuffer = cachedImage->getImage()->data(); | 277 RefPtr<SharedBuffer> imageBuffer = cachedImage->getImage()->data(); |
278 if (!imageBuffer || !imageBuffer->size()) | 278 if (!imageBuffer || !imageBuffer->size()) |
279 return; | 279 return; |
280 | 280 |
281 String imageExtension = cachedImage->getImage()->filenameExtension(); | 281 String imageExtension = cachedImage->getImage()->filenameExtension(); |
282 ASSERT(!imageExtension.isEmpty()); | 282 ASSERT(!imageExtension.isEmpty()); |
283 | 283 |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 | 442 |
443 DataTransfer::DataTransfer(DataTransferType type, | 443 DataTransfer::DataTransfer(DataTransferType type, |
444 DataTransferAccessPolicy policy, | 444 DataTransferAccessPolicy policy, |
445 DataObject* dataObject) | 445 DataObject* dataObject) |
446 : m_policy(policy), | 446 : m_policy(policy), |
447 m_dropEffect("uninitialized"), | 447 m_dropEffect("uninitialized"), |
448 m_effectAllowed("uninitialized"), | 448 m_effectAllowed("uninitialized"), |
449 m_transferType(type), | 449 m_transferType(type), |
450 m_dataObject(dataObject) {} | 450 m_dataObject(dataObject) {} |
451 | 451 |
452 void DataTransfer::setDragImage(ImageResource* image, | 452 void DataTransfer::setDragImage(ImageResourceContent* image, |
453 Node* node, | 453 Node* node, |
454 const IntPoint& loc) { | 454 const IntPoint& loc) { |
455 if (!canSetDragImage()) | 455 if (!canSetDragImage()) |
456 return; | 456 return; |
457 | 457 |
458 m_dragImage = image; | 458 m_dragImage = image; |
459 m_dragLoc = loc; | 459 m_dragLoc = loc; |
460 m_dragImageElement = node; | 460 m_dragImageElement = node; |
461 } | 461 } |
462 | 462 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 } | 506 } |
507 } | 507 } |
508 | 508 |
509 DEFINE_TRACE(DataTransfer) { | 509 DEFINE_TRACE(DataTransfer) { |
510 visitor->trace(m_dataObject); | 510 visitor->trace(m_dataObject); |
511 visitor->trace(m_dragImage); | 511 visitor->trace(m_dragImage); |
512 visitor->trace(m_dragImageElement); | 512 visitor->trace(m_dragImageElement); |
513 } | 513 } |
514 | 514 |
515 } // namespace blink | 515 } // namespace blink |
OLD | NEW |