1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome_frame/custom_sync_call_context.h"
6
7#include "base/bind.h"
8
9CreateExternalTabContext::CreateExternalTabContext(
10    ChromeFrameAutomationClient* client)
11    : client_(client) {
12}
13
14void CreateExternalTabContext::Completed(
15    HWND chrome_window, HWND tab_window, int tab_handle, int session_id) {
16  AutomationLaunchResult launch_result =
17      client_->CreateExternalTabComplete(chrome_window, tab_window,
18                                         tab_handle, session_id);
19  client_->PostTask(
20      FROM_HERE, base::Bind(&ChromeFrameAutomationClient::InitializeComplete,
21                            client_.get(), launch_result));
22}
23
24BeginNavigateContext::BeginNavigateContext(ChromeFrameAutomationClient* client)
25    : client_(client) {
26}
27
28void BeginNavigateContext::Completed(
29    AutomationMsg_NavigationResponseValues response) {
30  client_->BeginNavigateCompleted(response);
31}
32
33UnloadContext::UnloadContext(
34    base::WaitableEvent* unload_done, bool* should_unload)
35    : should_unload_(should_unload),
36      unload_done_(unload_done) {
37}
38
39void UnloadContext::Completed(bool should_unload) {
40  *should_unload_ = should_unload;
41  unload_done_->Signal();
42  should_unload_ = NULL;
43  unload_done_ = NULL;
44  // This object will be destroyed after this. Cannot access any members
45  // on returning from this function.
46}
47