WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
47659
TextInputController.hasSpellingMarkers() should be owned by LayoutTestController
https://bugs.webkit.org/show_bug.cgi?id=47659
Summary
TextInputController.hasSpellingMarkers() should be owned by LayoutTestController
Hajime Morrita
Reported
2010-10-14 01:26:59 PDT
Currently hasSpellingMarkers() is implemented as a method of textInputController. But textInputController is only available mac and chromium, and hasSpellingMarkers() does not depend on these platforms. So it should be located on our universal LayoutTestController.
Attachments
Patch
(21.45 KB, patch)
2010-10-18 03:35 PDT
,
Hajime Morrita
tkent
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Ryosuke Niwa
Comment 1
2010-10-14 01:51:45 PDT
(In reply to
comment #0
)
> Currently hasSpellingMarkers() is implemented as a method of textInputController. > But textInputController is only available mac and chromium, > and hasSpellingMarkers() does not depend on these platforms. > So it should be located on our universal LayoutTestController.
I'm not sure moving hasSpellingMarkers to layoutTestController is what we want. Can't we alternatively implement textInputController on other platforms? Let me cc few gtk/qt folks here.
Hajime Morrita
Comment 2
2010-10-14 03:02:22 PDT
(In reply to
comment #1
)
> > But textInputController is only available mac and chromium, > > and hasSpellingMarkers() does not depend on these platforms. > > So it should be located on our universal LayoutTestController. > > I'm not sure moving hasSpellingMarkers to layoutTestController is what we want. Can't we alternatively implement textInputController on other platforms? Let me cc few gtk/qt folks here.
Hmm. I agree that It would be better to have TextInputController for each platform. On the other hand, marker is not related to text input. It can worked with directly-inputted text. Actually, implementation of hasSpellingMarker is in WebCore! So it would be natural to have it on LTC, I think.
Tony Chang
Comment 3
2010-10-14 13:38:44 PDT
Would it be possible to split TextInputController into a shared header and cpp file in WebKitTools/DumpRenderTree and have platform specific methods in the subdirectories (like we do for LayoutTestController.h,.cpp and LayoutTestController{Mac,Win,QT,etc})? It seems like there are multiple methods in TextInputController that could be shared across platforms that use JSC.
Hajime Morrita
Comment 4
2010-10-14 18:35:39 PDT
> Would it be possible to split TextInputController into a shared header and cpp file in WebKitTools/DumpRenderTree and have platform specific methods in the subdirectories (like we do for LayoutTestController.h,.cpp and LayoutTestController{Mac,Win,QT,etc})? It seems like there are multiple methods in TextInputController that could be shared across platforms that use JSC.
It's possible. It's a kind of rewriting though. It's more like as EventSender than LayoutTestController. And each port has independent implementation for EventSender. I don't wan't to push this kind of fragmentation. Instead, I hope the portable part of the code to move into WebCore if possible, as I trying for LayourTestController.
https://bugs.webkit.org/show_bug.cgi?id=42612
Hajime Morrita
Comment 5
2010-10-14 19:08:35 PDT
Changed bug summary line.
Tony Chang
Comment 6
2010-10-14 19:30:10 PDT
It's not clear to me when we decide to put something on LayoutTestController rather than creating a new object like EventSender or TextInputController. Maybe Eric can fill me in on the history? Is there a benefit other than namespacing the functions?
Hajime Morrita
Comment 7
2010-10-14 22:30:25 PDT
(In reply to
comment #6
)
> It's not clear to me when we decide to put something on LayoutTestController rather than creating a new object like EventSender or TextInputController. > > Maybe Eric can fill me in on the history? Is there a benefit other than namespacing the functions?
It looks TextInputController maps underlying NSTextInput protocol which is implemented by WebHTMLView.
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSTextInputClient_Protocol/Reference/Reference.html
(NSTextInput protocol is deprecated by similar NSTextInputClient protocol.) One exception is hasSpellingMarkers(), implemented by Google recently, just ignores such design intent. These APIs are mainly used on tests under platform/mac/editing/* . A few tests under LayoutTests/editing/* also uses a part of TextController API, but such use isn't related to text input framework: getting caret rect, selected range, etc. (We can even rewrite some of such test not to use textInputController.) Following 4 APIs are used in LayoutTests/editing/* - textInputController.attributedSubstringFromRange - textInputController.firstRectForCharacterRange - textInputController.selectedRange - textInputController.hasSpellingMarker I thinks these API should be available ports other than mac and chromium because they just export selection/caret state and not bound to specific IM framework. Other APIs, used in LayoutTests/platform/mac/, are required for testing IM integration on Cocoa. So non-Mac ports don't need them. (They should have their own testing API to exercise platform specific IM integration. Chromium port is an exception because its rendering process isn't bound any specific IM framework and choose Cocoa-like abstraction for it. But that's another story.) So I'd like to: - Move hasSpellingMarkers to LTC - investigate Layouttest/editing/ tests to rewrite them to de-TextInputController-ize. - Add missing LTC method for it, if required. Any suggestions are welcome!
Tony Chang
Comment 8
2010-10-15 11:08:27 PDT
This makes sense to me. Having TextInputController only used for mac specific tests seems ideal. Let's try to move - textInputController.attributedSubstringFromRange - textInputController.firstRectForCharacterRange - textInputController.selectedRange - textInputController.hasSpellingMarker to LTC since all ports need these methods for existing tests. Starting with hasSpellingMarker sounds like a good idea.
Eric Seidel (no email)
Comment 9
2010-10-15 11:20:49 PDT
LayoutTestController was the original JS-object exposed in DRT. All the others came later. I would like us to continue to move to a more cross-platform model. I think we should consider long-term the idea of moving all of DRT's API to being plugins. If we designed some sensible wrapper around NPAPI, we could easily expose most of DRT's helper logic via an NPAPI plugin, which could allow us to run layout tests in other configurations besides the DumpRenderTree executable (including chrome rendering processes, WebKit2 test shell, the Safari browser, or even in some future world Firefox!) Basically the take-away, is that this kind of make-things-cross-platform is great! Eventually we might even move away from using the JS API to do the object exposing and consider something JS-engine agnostic, like NPAPI or similar.
Hajime Morrita
Comment 10
2010-10-18 00:46:44 PDT
Thanks much for your feedback!
> Basically the take-away, is that this kind of make-things-cross-platform is great! Eventually we might even move away from using the JS API to do the object exposing and consider something JS-engine agnostic, like NPAPI or similar.
I have tried to move LayoutTestController to WebCore at
Bug 42612
, This approach is portable between ports, JS engine agnostic, and possibly available with non-DRT environment. With this approach, we can provide to a plugin just to switch the WebCore::LTC on. I would be happy if we could push forward
Bug 42612
. Anyway, I'll move TextController APIs to LTC soon.
Hajime Morrita
Comment 11
2010-10-18 00:56:04 PDT
Making the master bug on
Bug 47803
and narrowing the scope of this bug.
Hajime Morrita
Comment 12
2010-10-18 03:35:53 PDT
Created
attachment 71017
[details]
Patch
Kent Tamura
Comment 13
2010-10-18 04:04:08 PDT
Comment on
attachment 71017
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=71017&action=review
> WebKitTools/DumpRenderTree/qt/LayoutTestControllerQt.cpp:801 > +bool LayoutTestController::hasSpellingMarker(int, int)
should add a FIXME comment.
> WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp:1394 > +bool LayoutTestController::hasSpellingMarker(int, int)
ditto.
Hajime Morrita
Comment 14
2010-10-18 04:46:34 PDT
Committed
r69952
: <
http://trac.webkit.org/changeset/69952
>
James Robinson
Comment 15
2010-11-01 13:36:02 PDT
I'm a bit confused about the test output in Chromium:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&tests=editing%2Fspelling%2Fspelling-textarea.html&useWebKitCanary=true
On windows and linux the first line of output is "PASS 'zz' is not marked as misspelled." I wonder if in
http://trac.webkit.org/browser/trunk/LayoutTests/editing/spelling/spelling-textarea.html
line 19 is intended to be testFailed instead of testPassed. Is this result really a pass or a fail?
Hajime Morrita
Comment 16
2010-11-01 20:38:05 PDT
> On windows and linux the first line of output is "PASS 'zz' is not marked as misspelled." I wonder if in
http://trac.webkit.org/browser/trunk/LayoutTests/editing/spelling/spelling-textarea.html
line 19 is intended to be testFailed instead of testPassed. Is this result really a pass or a fail?
It should FAIL for windows and linux because current DRT for window and linux doesn't support spellcheck. I agree that the test expectation is confusing and filed
Bug 48818
for it. Thank you for letting me know.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug