Implement UndoManager's item() method
[WebKit-https.git] / Source / WebCore / bindings / v8 / DOMTransaction.h
1 /*
2  * Copyright (C) 2012 Google 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 GOOGLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16  * DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
17  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23  */
24
25 #ifndef DOMTransaction_h
26 #define DOMTransaction_h
27
28 #if ENABLE(UNDO_MANAGER)
29
30 #include "DOMTransactionStep.h"
31 #include "UndoStep.h"
32 #include "WorldContextHandle.h"
33 #include <wtf/RefPtr.h>
34
35 namespace WebCore {
36
37 class UndoManager;
38
39 class DOMTransaction : public UndoStep {
40 public:
41     static PassRefPtr<DOMTransaction> create(const WorldContextHandle&);
42
43     void apply();
44     virtual void unapply() OVERRIDE;
45     virtual void reapply() OVERRIDE;
46
47     virtual EditAction editingAction() const OVERRIDE { return EditActionUnspecified; }
48     virtual bool isDOMTransaction() const OVERRIDE { return true; }
49
50     v8::Handle<v8::Value> data();
51     void setData(v8::Handle<v8::Value>);
52
53     UndoManager* undoManager() const { return m_undoManager; }
54     void setUndoManager(UndoManager* undoManager) { m_undoManager = undoManager; }
55
56     void addTransactionStep(PassRefPtr<DOMTransactionStep> step) { m_transactionSteps.append(step); }
57
58 private:
59     DOMTransaction(const WorldContextHandle&);
60     v8::Handle<v8::Function> getFunction(const char*);
61     void callFunction(const char*);
62
63     WorldContextHandle m_worldContext;
64     UndoManager* m_undoManager;
65     bool m_isAutomatic;
66     Vector<RefPtr<DOMTransactionStep> > m_transactionSteps;
67 };
68
69 }
70
71 #endif
72
73 #endif