Index: chrome_frame/infobars/internal/host_window_manager.cc |
diff --git a/chrome_frame/infobars/internal/host_window_manager.cc b/chrome_frame/infobars/internal/host_window_manager.cc |
deleted file mode 100644 |
index 34bcf9097e5a2ac9b9ca3cb4c239c2b31d393326..0000000000000000000000000000000000000000 |
--- a/chrome_frame/infobars/internal/host_window_manager.cc |
+++ /dev/null |
@@ -1,119 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome_frame/infobars/internal/host_window_manager.h" |
- |
-#include "chrome_frame/infobars/internal/displaced_window_manager.h" |
- |
-namespace { |
- |
-const wchar_t kIeTabContentParentWindowClass[] = L"Shell DocObject View"; |
- |
-} // namespace |
- |
-// Receives notification when the displaced window is destroyed, and forwards |
-// displaced window dimensions on to HostWindowManager::Delegate. |
-class HostWindowManager::DisplacedWindowDelegate |
- : public DisplacedWindowManager::Delegate { |
- public: |
- explicit DisplacedWindowDelegate(HostWindowManager* manager); |
- virtual ~DisplacedWindowDelegate(); |
- |
- // DisplacedWindowManager::Delegate implementation |
- virtual void AdjustDisplacedWindowDimensions(RECT* rect); |
- |
- private: |
- HostWindowManager* manager_; // Not owned by this instance |
- DISALLOW_COPY_AND_ASSIGN(DisplacedWindowDelegate); |
-}; // class HostWindowManager::DisplacedWindowDelegate |
- |
-HostWindowManager::DisplacedWindowDelegate::DisplacedWindowDelegate( |
- HostWindowManager* manager) : manager_(manager) { |
-} |
- |
-// Called when the displaced window is destroyed. Try to find a new displaced |
-// window. |
-HostWindowManager::DisplacedWindowDelegate::~DisplacedWindowDelegate() { |
- HWND old_window = *manager_->displaced_window_manager_; |
- // Will be deleted in its OnFinalMessage |
- manager_->displaced_window_manager_ = NULL; |
- |
- // Check to see if a new window has already been created. |
- if (manager_->FindDisplacedWindow(old_window)) |
- manager_->UpdateLayout(); |
-} |
- |
-// Forward this on to our delegate |
-void HostWindowManager::DisplacedWindowDelegate:: |
- AdjustDisplacedWindowDimensions(RECT* rect) { |
- manager_->delegate()->AdjustDisplacedWindowDimensions(rect); |
-} |
- |
-// Callback function for EnumChildWindows (looks for a window with class |
-// kIeTabContentParentWindowClass). |
-// |
-// lparam must point to an HWND that is either NULL or the HWND of the displaced |
-// window that is being destroyed. We will ignore that window if we come across |
-// it, and update lparam to point to the new displaced window if it is found. |
-static BOOL CALLBACK FindDisplacedWindowProc(HWND hwnd, LPARAM lparam) { |
- DCHECK(lparam != NULL); |
- HWND* window_handle = reinterpret_cast<HWND*>(lparam); |
- |
- if (hwnd == *window_handle) |
- return TRUE; // Skip this, it's the old displaced window. |
- |
- // Variable to hold the class name. The size does not matter as long as it |
- // is at least can hold kIeTabContentParentWindowClass. |
- wchar_t class_name[100]; |
- if (::GetClassName(hwnd, class_name, arraysize(class_name)) && |
- lstrcmpi(kIeTabContentParentWindowClass, class_name) == 0) { |
- // We found the window. Return its handle and stop enumeration. |
- *window_handle = hwnd; |
- return FALSE; |
- } |
- return TRUE; |
-} |
- |
-HostWindowManager::HostWindowManager() : displaced_window_manager_(NULL) { |
-} |
- |
-HostWindowManager::~HostWindowManager() { |
- // If we are holding a displaced_window_manager_, it means that |
- // OnDisplacedWindowManagerDestroyed has not been called yet, and therefore |
- // our DisplacedWindowDelegate might still be around, ready to invoke us. |
- // Fail fast to prevent a call into lala-land. |
- CHECK(displaced_window_manager_ == NULL); |
-} |
- |
-void HostWindowManager::UpdateLayout() { |
- if (FindDisplacedWindow(NULL)) |
- displaced_window_manager_->UpdateLayout(); |
-} |
- |
-bool HostWindowManager::FindDisplacedWindow(HWND old_window) { |
- if (displaced_window_manager_ == NULL || |
- *displaced_window_manager_ == old_window) { |
- // Find the window which is the container for the HTML view (parent of |
- // the content). When the displaced window is destroyed, the new one might |
- // already exist, so we say "find a displaced window that is not this |
- // (old) one". |
- HWND displaced_window = old_window; |
- ::EnumChildWindows(*this, FindDisplacedWindowProc, |
- reinterpret_cast<LPARAM>(&displaced_window)); |
- |
- if (displaced_window == old_window) { |
- LOG(ERROR) << "Failed to locate IE renderer HWND to displace for " |
- << "Infobar installation."; |
- } else { |
- scoped_ptr<DisplacedWindowManager> displaced_window_manager( |
- new DisplacedWindowManager()); |
- if (displaced_window_manager->Initialize( |
- displaced_window, new DisplacedWindowDelegate(this))) { |
- displaced_window_manager_ = displaced_window_manager.release(); |
- } |
- } |
- } |
- |
- return displaced_window_manager_ != NULL; |
-} |