Home | History | Annotate | Download | only in chrome_frame
      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 
      9 CreateExternalTabContext::CreateExternalTabContext(
     10     ChromeFrameAutomationClient* client)
     11     : client_(client) {
     12 }
     13 
     14 void 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 
     24 BeginNavigateContext::BeginNavigateContext(ChromeFrameAutomationClient* client)
     25     : client_(client) {
     26 }
     27 
     28 void BeginNavigateContext::Completed(
     29     AutomationMsg_NavigationResponseValues response) {
     30   client_->BeginNavigateCompleted(response);
     31 }
     32 
     33 UnloadContext::UnloadContext(
     34     base::WaitableEvent* unload_done, bool* should_unload)
     35     : should_unload_(should_unload),
     36       unload_done_(unload_done) {
     37 }
     38 
     39 void 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