Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Side by Side Diff: third_party/WebKit/Source/core/editing/commands/SplitTextNodeCommand.cpp

Issue 2171493003: [Editing][DOM][CodeHealth] Make Node::hasEditableStyle global functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 // rather is based on how this code happens to work. 45 // rather is based on how this code happens to work.
46 DCHECK(m_text2); 46 DCHECK(m_text2);
47 DCHECK_GT(m_text2->length(), 0u); 47 DCHECK_GT(m_text2->length(), 0u);
48 DCHECK_GT(m_offset, 0u); 48 DCHECK_GT(m_offset, 0u);
49 DCHECK_LT(m_offset, m_text2->length()); 49 DCHECK_LT(m_offset, m_text2->length());
50 } 50 }
51 51
52 void SplitTextNodeCommand::doApply(EditingState*) 52 void SplitTextNodeCommand::doApply(EditingState*)
53 { 53 {
54 ContainerNode* parent = m_text2->parentNode(); 54 ContainerNode* parent = m_text2->parentNode();
55 if (!parent || !parent->hasEditableStyle()) 55 if (!parent || !hasEditableStyle(*parent))
56 return; 56 return;
57 57
58 String prefixText = m_text2->substringData(0, m_offset, IGNORE_EXCEPTION); 58 String prefixText = m_text2->substringData(0, m_offset, IGNORE_EXCEPTION);
59 if (prefixText.isEmpty()) 59 if (prefixText.isEmpty())
60 return; 60 return;
61 61
62 m_text1 = Text::create(document(), prefixText); 62 m_text1 = Text::create(document(), prefixText);
63 DCHECK(m_text1); 63 DCHECK(m_text1);
64 document().markers().copyMarkers(m_text2.get(), 0, m_offset, m_text1.get(), 0); 64 document().markers().copyMarkers(m_text2.get(), 0, m_offset, m_text1.get(), 0);
65 65
66 insertText1AndTrimText2(); 66 insertText1AndTrimText2();
67 } 67 }
68 68
69 void SplitTextNodeCommand::doUnapply() 69 void SplitTextNodeCommand::doUnapply()
70 { 70 {
71 if (!m_text1 || !m_text1->hasEditableStyle()) 71 if (!m_text1 || !hasEditableStyle(*m_text1))
72 return; 72 return;
73 73
74 DCHECK_EQ(m_text1->document(), document()); 74 DCHECK_EQ(m_text1->document(), document());
75 75
76 String prefixText = m_text1->data(); 76 String prefixText = m_text1->data();
77 77
78 m_text2->insertData(0, prefixText, ASSERT_NO_EXCEPTION); 78 m_text2->insertData(0, prefixText, ASSERT_NO_EXCEPTION);
79 document().updateStyleAndLayout(); 79 document().updateStyleAndLayout();
80 80
81 document().markers().copyMarkers(m_text1.get(), 0, prefixText.length(), m_te xt2.get(), 0); 81 document().markers().copyMarkers(m_text1.get(), 0, prefixText.length(), m_te xt2.get(), 0);
82 m_text1->remove(ASSERT_NO_EXCEPTION); 82 m_text1->remove(ASSERT_NO_EXCEPTION);
83 } 83 }
84 84
85 void SplitTextNodeCommand::doReapply() 85 void SplitTextNodeCommand::doReapply()
86 { 86 {
87 if (!m_text1 || !m_text2) 87 if (!m_text1 || !m_text2)
88 return; 88 return;
89 89
90 ContainerNode* parent = m_text2->parentNode(); 90 ContainerNode* parent = m_text2->parentNode();
91 if (!parent || !parent->hasEditableStyle()) 91 if (!parent || !hasEditableStyle(*parent))
92 return; 92 return;
93 93
94 insertText1AndTrimText2(); 94 insertText1AndTrimText2();
95 } 95 }
96 96
97 void SplitTextNodeCommand::insertText1AndTrimText2() 97 void SplitTextNodeCommand::insertText1AndTrimText2()
98 { 98 {
99 TrackExceptionState exceptionState; 99 TrackExceptionState exceptionState;
100 m_text2->parentNode()->insertBefore(m_text1.get(), m_text2.get(), exceptionS tate); 100 m_text2->parentNode()->insertBefore(m_text1.get(), m_text2.get(), exceptionS tate);
101 if (exceptionState.hadException()) 101 if (exceptionState.hadException())
102 return; 102 return;
103 m_text2->deleteData(0, m_offset, exceptionState); 103 m_text2->deleteData(0, m_offset, exceptionState);
104 document().updateStyleAndLayout(); 104 document().updateStyleAndLayout();
105 } 105 }
106 106
107 DEFINE_TRACE(SplitTextNodeCommand) 107 DEFINE_TRACE(SplitTextNodeCommand)
108 { 108 {
109 visitor->trace(m_text1); 109 visitor->trace(m_text1);
110 visitor->trace(m_text2); 110 visitor->trace(m_text2);
111 SimpleEditCommand::trace(visitor); 111 SimpleEditCommand::trace(visitor);
112 } 112 }
113 113
114 } // namespace blink 114 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698