c5c68d81f8d760f7554a63d40f27fc13cf093c0d
[WebKit-https.git] / Source / WebKit2 / Shared / EditorState.cpp
1 /*
2  * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "EditorState.h"
28
29 #include "Arguments.h"
30 #include "WebCoreArgumentCoders.h"
31
32 namespace WebKit {
33
34 void EditorState::encode(CoreIPC::ArgumentEncoder& encoder) const
35 {
36     encoder << shouldIgnoreCompositionSelectionChange;
37     encoder << selectionIsNone;
38     encoder << selectionIsRange;
39     encoder << isContentEditable;
40     encoder << isContentRichlyEditable;
41     encoder << isInPasswordField;
42     encoder << hasComposition;
43
44 #if PLATFORM(QT)
45     encoder << cursorPosition;
46     encoder << anchorPosition;
47     encoder << editorRect;
48     encoder << compositionRect;
49     encoder << inputMethodHints;
50     encoder << selectedText;
51     encoder << surroundingText;
52 #endif
53
54 #if PLATFORM(QT) || PLATFORM(GTK)
55     encoder << cursorRect;
56 #endif
57 }
58
59 bool EditorState::decode(CoreIPC::ArgumentDecoder* decoder, EditorState& result)
60 {
61     if (!decoder->decode(result.shouldIgnoreCompositionSelectionChange))
62         return false;
63
64     if (!decoder->decode(result.selectionIsNone))
65         return false;
66
67     if (!decoder->decode(result.selectionIsRange))
68         return false;
69
70     if (!decoder->decode(result.isContentEditable))
71         return false;
72
73     if (!decoder->decode(result.isContentRichlyEditable))
74         return false;
75
76     if (!decoder->decode(result.isInPasswordField))
77         return false;
78
79     if (!decoder->decode(result.hasComposition))
80         return false;
81
82 #if PLATFORM(QT)
83     if (!decoder->decode(result.cursorPosition))
84         return false;
85
86     if (!decoder->decode(result.anchorPosition))
87         return false;
88
89     if (!decoder->decode(result.editorRect))
90         return false;
91
92     if (!decoder->decode(result.compositionRect))
93         return false;
94
95     if (!decoder->decode(result.inputMethodHints))
96         return false;
97
98     if (!decoder->decode(result.selectedText))
99         return false;
100
101     if (!decoder->decode(result.surroundingText))
102         return false;
103 #endif
104
105 #if PLATFORM(QT) || PLATFORM(GTK)
106     if (!decoder->decode(result.cursorRect))
107         return false;
108 #endif
109
110     return true;
111 }
112
113 }