| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 // needs to be audited. See http://crbug.com/590369 for more details. | 1138 // needs to be audited. See http://crbug.com/590369 for more details. |
| 1139 // |tryDHTMLCut| dispatches cut event, which may make layout dirty, but we | 1139 // |tryDHTMLCut| dispatches cut event, which may make layout dirty, but we |
| 1140 // need clean layout to obtain the selected content. | 1140 // need clean layout to obtain the selected content. |
| 1141 GetFrame().GetDocument()->UpdateStyleAndLayoutIgnorePendingStylesheets(); | 1141 GetFrame().GetDocument()->UpdateStyleAndLayoutIgnorePendingStylesheets(); |
| 1142 | 1142 |
| 1143 // TODO(yosin) We should use early return style here. | 1143 // TODO(yosin) We should use early return style here. |
| 1144 if (CanDeleteRange(SelectedRange())) { | 1144 if (CanDeleteRange(SelectedRange())) { |
| 1145 GetSpellChecker().UpdateMarkersForWordsAffectedByEditing(true); | 1145 GetSpellChecker().UpdateMarkersForWordsAffectedByEditing(true); |
| 1146 if (EnclosingTextControl(GetFrame() | 1146 if (EnclosingTextControl(GetFrame() |
| 1147 .Selection() | 1147 .Selection() |
| 1148 .ComputeVisibleSelectionInDOMTreeDeprecated() | 1148 .ComputeVisibleSelectionInDOMTree() |
| 1149 .Start())) { | 1149 .Start())) { |
| 1150 String plain_text = GetFrame().SelectedTextForClipboard(); | 1150 String plain_text = GetFrame().SelectedTextForClipboard(); |
| 1151 Pasteboard::GeneralPasteboard()->WritePlainText( | 1151 Pasteboard::GeneralPasteboard()->WritePlainText( |
| 1152 plain_text, CanSmartCopyOrDelete() ? Pasteboard::kCanSmartReplace | 1152 plain_text, CanSmartCopyOrDelete() ? Pasteboard::kCanSmartReplace |
| 1153 : Pasteboard::kCannotSmartReplace); | 1153 : Pasteboard::kCannotSmartReplace); |
| 1154 } else { | 1154 } else { |
| 1155 WriteSelectionToPasteboard(); | 1155 WriteSelectionToPasteboard(); |
| 1156 } | 1156 } |
| 1157 | 1157 |
| 1158 if (source == kCommandFromMenuOrKeyBinding) { | 1158 if (source == kCommandFromMenuOrKeyBinding) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1176 return; // DHTML did the whole operation | 1176 return; // DHTML did the whole operation |
| 1177 if (!CanCopy()) | 1177 if (!CanCopy()) |
| 1178 return; | 1178 return; |
| 1179 | 1179 |
| 1180 // TODO(editing-dev): The use of updateStyleAndLayoutIgnorePendingStylesheets | 1180 // TODO(editing-dev): The use of updateStyleAndLayoutIgnorePendingStylesheets |
| 1181 // needs to be audited. See http://crbug.com/590369 for more details. | 1181 // needs to be audited. See http://crbug.com/590369 for more details. |
| 1182 // |tryDHTMLCopy| dispatches copy event, which may make layout dirty, but | 1182 // |tryDHTMLCopy| dispatches copy event, which may make layout dirty, but |
| 1183 // we need clean layout to obtain the selected content. | 1183 // we need clean layout to obtain the selected content. |
| 1184 GetFrame().GetDocument()->UpdateStyleAndLayoutIgnorePendingStylesheets(); | 1184 GetFrame().GetDocument()->UpdateStyleAndLayoutIgnorePendingStylesheets(); |
| 1185 | 1185 |
| 1186 if (EnclosingTextControl(GetFrame() | 1186 if (EnclosingTextControl( |
| 1187 .Selection() | 1187 GetFrame().Selection().ComputeVisibleSelectionInDOMTree().Start())) { |
| 1188 .ComputeVisibleSelectionInDOMTreeDeprecated() | |
| 1189 .Start())) { | |
| 1190 Pasteboard::GeneralPasteboard()->WritePlainText( | 1188 Pasteboard::GeneralPasteboard()->WritePlainText( |
| 1191 GetFrame().SelectedTextForClipboard(), | 1189 GetFrame().SelectedTextForClipboard(), |
| 1192 CanSmartCopyOrDelete() ? Pasteboard::kCanSmartReplace | 1190 CanSmartCopyOrDelete() ? Pasteboard::kCanSmartReplace |
| 1193 : Pasteboard::kCannotSmartReplace); | 1191 : Pasteboard::kCannotSmartReplace); |
| 1194 } else { | 1192 } else { |
| 1195 Document* document = GetFrame().GetDocument(); | 1193 Document* document = GetFrame().GetDocument(); |
| 1196 if (HTMLImageElement* image_element = | 1194 if (HTMLImageElement* image_element = |
| 1197 ImageElementFromImageDocument(document)) | 1195 ImageElementFromImageDocument(document)) |
| 1198 WriteImageNodeToPasteboard(Pasteboard::GeneralPasteboard(), image_element, | 1196 WriteImageNodeToPasteboard(Pasteboard::GeneralPasteboard(), image_element, |
| 1199 document->title()); | 1197 document->title()); |
| 1200 else | 1198 else |
| 1201 WriteSelectionToPasteboard(); | 1199 WriteSelectionToPasteboard(); |
| 1202 } | 1200 } |
| 1203 } | 1201 } |
| 1204 | 1202 |
| 1205 void Editor::Paste(EditorCommandSource source) { | 1203 void Editor::Paste(EditorCommandSource source) { |
| 1206 DCHECK(GetFrame().GetDocument()); | 1204 DCHECK(GetFrame().GetDocument()); |
| 1207 if (TryDHTMLPaste(kAllMimeTypes)) | 1205 if (TryDHTMLPaste(kAllMimeTypes)) |
| 1208 return; // DHTML did the whole operation | 1206 return; // DHTML did the whole operation |
| 1209 if (!CanPaste()) | 1207 if (!CanPaste()) |
| 1210 return; | 1208 return; |
| 1211 GetSpellChecker().UpdateMarkersForWordsAffectedByEditing(false); | 1209 GetSpellChecker().UpdateMarkersForWordsAffectedByEditing(false); |
| 1212 ResourceFetcher* loader = GetFrame().GetDocument()->Fetcher(); | 1210 ResourceFetcher* loader = GetFrame().GetDocument()->Fetcher(); |
| 1213 ResourceCacheValidationSuppressor validation_suppressor(loader); | 1211 ResourceCacheValidationSuppressor validation_suppressor(loader); |
| 1214 | 1212 |
| 1215 PasteMode paste_mode = GetFrame() | 1213 PasteMode paste_mode = GetFrame() |
| 1216 .Selection() | 1214 .Selection() |
| 1217 .ComputeVisibleSelectionInDOMTreeDeprecated() | 1215 .ComputeVisibleSelectionInDOMTree() |
| 1218 .IsContentRichlyEditable() | 1216 .IsContentRichlyEditable() |
| 1219 ? kAllMimeTypes | 1217 ? kAllMimeTypes |
| 1220 : kPlainTextOnly; | 1218 : kPlainTextOnly; |
| 1221 | 1219 |
| 1222 if (source == kCommandFromMenuOrKeyBinding) { | 1220 if (source == kCommandFromMenuOrKeyBinding) { |
| 1223 DataTransfer* data_transfer = | 1221 DataTransfer* data_transfer = |
| 1224 DataTransfer::Create(DataTransfer::kCopyAndPaste, kDataTransferReadable, | 1222 DataTransfer::Create(DataTransfer::kCopyAndPaste, kDataTransferReadable, |
| 1225 DataObject::CreateFromPasteboard(paste_mode)); | 1223 DataObject::CreateFromPasteboard(paste_mode)); |
| 1226 | 1224 |
| 1227 if (DispatchBeforeInputDataTransfer(FindEventTargetFromSelection(), | 1225 if (DispatchBeforeInputDataTransfer(FindEventTargetFromSelection(), |
| (...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1820 | 1818 |
| 1821 DEFINE_TRACE(Editor) { | 1819 DEFINE_TRACE(Editor) { |
| 1822 visitor->Trace(frame_); | 1820 visitor->Trace(frame_); |
| 1823 visitor->Trace(last_edit_command_); | 1821 visitor->Trace(last_edit_command_); |
| 1824 visitor->Trace(undo_stack_); | 1822 visitor->Trace(undo_stack_); |
| 1825 visitor->Trace(mark_); | 1823 visitor->Trace(mark_); |
| 1826 visitor->Trace(typing_style_); | 1824 visitor->Trace(typing_style_); |
| 1827 } | 1825 } |
| 1828 | 1826 |
| 1829 } // namespace blink | 1827 } // namespace blink |
| OLD | NEW |