[email protected] | 3b63f8f4 | 2011-03-28 01:54:15 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
3 | // found in the LICENSE file. | ||||
[email protected] | 44f9c95 | 2011-01-02 06:05:39 | [diff] [blame] | 4 | |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 5 | #ifndef CHROME_FRAME_CUSTOM_SYNC_CALL_CONTEXT_H_ |
6 | #define CHROME_FRAME_CUSTOM_SYNC_CALL_CONTEXT_H_ | ||||
7 | |||||
8 | #include <vector> | ||||
[email protected] | bb04c4e | 2011-11-18 20:44:22 | [diff] [blame] | 9 | |
[email protected] | 3b63f8f4 | 2011-03-28 01:54:15 | [diff] [blame] | 10 | #include "base/memory/ref_counted.h" |
[email protected] | 44f9c95 | 2011-01-02 06:05:39 | [diff] [blame] | 11 | #include "base/synchronization/waitable_event.h" |
[email protected] | c694427 | 2012-01-06 22:12:28 | [diff] [blame] | 12 | #include "base/tuple.h" |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 13 | #include "chrome_frame/sync_msg_reply_dispatcher.h" |
14 | #include "chrome_frame/chrome_frame_automation.h" | ||||
15 | #include "ipc/ipc_sync_message.h" | ||||
16 | |||||
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 17 | // Class that maintains contextual information for the create and connect |
18 | // external tab operations. | ||||
19 | class CreateExternalTabContext | ||||
20 | : public SyncMessageReplyDispatcher::SyncMessageCallContext { | ||||
21 | public: | ||||
[email protected] | 751bf4b | 2010-11-05 22:06:31 | [diff] [blame] | 22 | typedef Tuple4<HWND, HWND, int, int> output_type; |
[email protected] | a1e41bb | 2011-12-21 21:01:21 | [diff] [blame] | 23 | explicit CreateExternalTabContext(ChromeFrameAutomationClient* client); |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 24 | |
[email protected] | 751bf4b | 2010-11-05 22:06:31 | [diff] [blame] | 25 | void Completed(HWND chrome_window, HWND tab_window, int tab_handle, |
[email protected] | a1e41bb | 2011-12-21 21:01:21 | [diff] [blame] | 26 | int session_id); |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 27 | |
28 | private: | ||||
29 | scoped_refptr<ChromeFrameAutomationClient> client_; | ||||
30 | }; | ||||
31 | |||||
32 | // This class maintains context information for the BeginNavigate operations | ||||
33 | // pertaining to the external tab. | ||||
34 | class BeginNavigateContext | ||||
35 | : public SyncMessageReplyDispatcher::SyncMessageCallContext { | ||||
36 | public: | ||||
[email protected] | a1e41bb | 2011-12-21 21:01:21 | [diff] [blame] | 37 | explicit BeginNavigateContext(ChromeFrameAutomationClient* client); |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 38 | |
39 | typedef Tuple1<AutomationMsg_NavigationResponseValues> output_type; | ||||
40 | |||||
[email protected] | a1e41bb | 2011-12-21 21:01:21 | [diff] [blame] | 41 | void Completed(AutomationMsg_NavigationResponseValues response); |
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 42 | |
43 | private: | ||||
44 | scoped_refptr<ChromeFrameAutomationClient> client_; | ||||
45 | }; | ||||
46 | |||||
[email protected] | d9d8f0c | 2010-09-17 21:47:16 | [diff] [blame] | 47 | // Class that maintains contextual information for the unload operation, i.e. |
48 | // when the user attempts to navigate away from a page rendered in ChromeFrame. | ||||
49 | class UnloadContext | ||||
50 | : public SyncMessageReplyDispatcher::SyncMessageCallContext { | ||||
51 | public: | ||||
52 | typedef Tuple1<bool> output_type; | ||||
[email protected] | a1e41bb | 2011-12-21 21:01:21 | [diff] [blame] | 53 | UnloadContext(base::WaitableEvent* unload_done, bool* should_unload); |
[email protected] | d9d8f0c | 2010-09-17 21:47:16 | [diff] [blame] | 54 | |
[email protected] | a1e41bb | 2011-12-21 21:01:21 | [diff] [blame] | 55 | void Completed(bool should_unload); |
[email protected] | d9d8f0c | 2010-09-17 21:47:16 | [diff] [blame] | 56 | |
57 | private: | ||||
58 | base::WaitableEvent* unload_done_; | ||||
59 | bool* should_unload_; | ||||
60 | }; | ||||
61 | |||||
[email protected] | d0b8e5f | 2010-05-18 04:26:02 | [diff] [blame] | 62 | #endif // CHROME_FRAME_CUSTOM_SYNC_CALL_CONTEXT_H_ |