OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "content/browser/renderer_host/text_input_client_mac.h" | 5 #import "content/browser/renderer_host/text_input_client_mac.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/threading/thread.h" | 9 #include "base/threading/thread.h" |
10 #include "content/browser/renderer_host/render_process_host_impl.h" | 10 #include "content/browser/renderer_host/render_process_host_impl.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 thread_.Stop(); | 97 thread_.Stop(); |
98 } | 98 } |
99 | 99 |
100 private: | 100 private: |
101 base::Thread& thread_; | 101 base::Thread& thread_; |
102 }; | 102 }; |
103 | 103 |
104 // Adapter for OnMessageReceived to ignore return type so it can be posted | 104 // Adapter for OnMessageReceived to ignore return type so it can be posted |
105 // to a MessageLoop. | 105 // to a MessageLoop. |
106 void CallOnMessageReceived(scoped_refptr<TextInputClientMessageFilter> filter, | 106 void CallOnMessageReceived(scoped_refptr<TextInputClientMessageFilter> filter, |
107 const IPC::Message& message, | 107 const IPC::Message& message) { |
108 bool* message_was_ok) { | 108 filter->OnMessageReceived(message); |
109 filter->OnMessageReceived(message, message_was_ok); | |
110 } | 109 } |
111 | 110 |
112 } // namespace | 111 } // namespace |
113 | 112 |
114 // Test Cases ////////////////////////////////////////////////////////////////// | 113 // Test Cases ////////////////////////////////////////////////////////////////// |
115 | 114 |
116 TEST_F(TextInputClientMacTest, GetCharacterIndex) { | 115 TEST_F(TextInputClientMacTest, GetCharacterIndex) { |
117 ScopedTestingThread thread(this); | 116 ScopedTestingThread thread(this); |
118 const NSUInteger kSuccessValue = 42; | 117 const NSUInteger kSuccessValue = 42; |
119 | 118 |
(...skipping 26 matching lines...) Expand all Loading... |
146 // Set an arbitrary value to ensure the index is not |NSNotFound|. | 145 // Set an arbitrary value to ensure the index is not |NSNotFound|. |
147 PostTask(FROM_HERE, | 146 PostTask(FROM_HERE, |
148 base::Bind(&TextInputClientMac::SetCharacterIndexAndSignal, | 147 base::Bind(&TextInputClientMac::SetCharacterIndexAndSignal, |
149 base::Unretained(service()), kPreviousValue)); | 148 base::Unretained(service()), kPreviousValue)); |
150 | 149 |
151 scoped_refptr<TextInputClientMessageFilter> filter( | 150 scoped_refptr<TextInputClientMessageFilter> filter( |
152 new TextInputClientMessageFilter(widget()->GetProcess()->GetID())); | 151 new TextInputClientMessageFilter(widget()->GetProcess()->GetID())); |
153 scoped_ptr<IPC::Message> message( | 152 scoped_ptr<IPC::Message> message( |
154 new TextInputClientReplyMsg_GotCharacterIndexForPoint( | 153 new TextInputClientReplyMsg_GotCharacterIndexForPoint( |
155 widget()->GetRoutingID(), kNotFoundValue)); | 154 widget()->GetRoutingID(), kNotFoundValue)); |
156 bool message_ok = true; | |
157 // Set |WTF::notFound| to the index |kTaskDelayMs| after the previous | 155 // Set |WTF::notFound| to the index |kTaskDelayMs| after the previous |
158 // setting. | 156 // setting. |
159 PostTask(FROM_HERE, | 157 PostTask(FROM_HERE, |
160 base::Bind(&CallOnMessageReceived, filter, *message, &message_ok), | 158 base::Bind(&CallOnMessageReceived, filter, *message), |
161 base::TimeDelta::FromMilliseconds(kTaskDelayMs) * 2); | 159 base::TimeDelta::FromMilliseconds(kTaskDelayMs) * 2); |
162 | 160 |
163 NSUInteger index = service()->GetCharacterIndexAtPoint( | 161 NSUInteger index = service()->GetCharacterIndexAtPoint( |
164 widget(), gfx::Point(2, 2)); | 162 widget(), gfx::Point(2, 2)); |
165 EXPECT_EQ(kPreviousValue, index); | 163 EXPECT_EQ(kPreviousValue, index); |
166 index = service()->GetCharacterIndexAtPoint(widget(), gfx::Point(2, 2)); | 164 index = service()->GetCharacterIndexAtPoint(widget(), gfx::Point(2, 2)); |
167 EXPECT_EQ(NSNotFound, index); | 165 EXPECT_EQ(NSNotFound, index); |
168 | 166 |
169 EXPECT_EQ(2U, ipc_sink().message_count()); | 167 EXPECT_EQ(2U, ipc_sink().message_count()); |
170 for (size_t i = 0; i < ipc_sink().message_count(); ++i) { | 168 for (size_t i = 0; i < ipc_sink().message_count(); ++i) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 TEST_F(TextInputClientMacTest, TimeoutSubstring) { | 221 TEST_F(TextInputClientMacTest, TimeoutSubstring) { |
224 NSAttributedString* string = service()->GetAttributedSubstringFromRange( | 222 NSAttributedString* string = service()->GetAttributedSubstringFromRange( |
225 widget(), NSMakeRange(0, 32)); | 223 widget(), NSMakeRange(0, 32)); |
226 EXPECT_EQ(nil, string); | 224 EXPECT_EQ(nil, string); |
227 EXPECT_EQ(1U, ipc_sink().message_count()); | 225 EXPECT_EQ(1U, ipc_sink().message_count()); |
228 EXPECT_TRUE(ipc_sink().GetUniqueMessageMatching( | 226 EXPECT_TRUE(ipc_sink().GetUniqueMessageMatching( |
229 TextInputClientMsg_StringForRange::ID)); | 227 TextInputClientMsg_StringForRange::ID)); |
230 } | 228 } |
231 | 229 |
232 } // namespace content | 230 } // namespace content |
OLD | NEW |