| Index: wm/foreign_window.h
|
| diff --git a/wm/foreign_window.h b/wm/foreign_window.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6ef349312fe9eed8ea5edb053a02fdbb16d18e74
|
| --- /dev/null
|
| +++ b/wm/foreign_window.h
|
| @@ -0,0 +1,102 @@
|
| +// Copyright (c) 2013 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.
|
| +
|
| +#ifndef WM_FOREIGN_WINDOW_H_
|
| +#define WM_FOREIGN_WINDOW_H_
|
| +
|
| +#include "base/memory/ref_counted.h"
|
| +#include "ui/views/widget/widget_delegate.h"
|
| +#include "wm/host/foreign_window_host_delegate.h"
|
| +
|
| +namespace views {
|
| +class ClientView;
|
| +}
|
| +
|
| +namespace wm {
|
| +class ForeignWindowClientView;
|
| +class ForeignWindowHost;
|
| +
|
| +class ForeignWindow : public base::RefCounted<ForeignWindow>,
|
| + public ForeignWindowHostDelegate,
|
| + public views::WidgetDelegate {
|
| + public:
|
| + enum DisplayState {
|
| + DISPLAY_NORMAL,
|
| + DISPLAY_ICONIC,
|
| + DISPLAY_WITHDRAWN
|
| + };
|
| + struct CreateParams {
|
| + CreateParams(gfx::PluginWindowHandle window_handle,
|
| + gfx::Size preferred_size);
|
| +
|
| + gfx::PluginWindowHandle window_handle;
|
| + gfx::Size preferred_size;
|
| + };
|
| + explicit ForeignWindow(const CreateParams& params);
|
| +
|
| + // Retrieves the ForeignWindow implementation associated with the
|
| + // given NativeView, or NULL if the supplied handle has no associated
|
| + // ForeignWindow.
|
| + static ForeignWindow* GetForeignWindowForNativeView(
|
| + gfx::NativeView native_view);
|
| +
|
| + // Overridden from wm::ForeignWindowHostDelegate:
|
| + virtual void OnWindowContentsChanged() OVERRIDE;
|
| +
|
| + // Overridden from views::WidgetDelegate:
|
| + virtual views::Widget* GetWidget() OVERRIDE;
|
| + virtual const views::Widget* GetWidget() const OVERRIDE;
|
| + virtual views::ClientView* CreateClientView(views::Widget* widget) OVERRIDE;
|
| + virtual void DeleteDelegate() OVERRIDE;
|
| + virtual bool CanResize() const OVERRIDE;
|
| + virtual bool CanMaximize() const OVERRIDE;
|
| + virtual bool CanActivate() const OVERRIDE;
|
| +
|
| + // Called by widget. Attempts to close the foreign window.
|
| + void Close();
|
| +
|
| + // Create a new views::WidgetDelegate.
|
| + views::WidgetDelegate* CreateWidgetDelegate();
|
| +
|
| + // Returns the window handle.
|
| + gfx::PluginWindowHandle GetWindowHandle() const;
|
| +
|
| + // Returns the native view.
|
| + gfx::NativeView GetNativeView() const;
|
| +
|
| + // Set foreign window display state.
|
| + void SetDisplayState(DisplayState state);
|
| + DisplayState GetDisplayState() const;
|
| +
|
| + // Returns true if foreign window is managed.
|
| + bool IsManaged() const;
|
| +
|
| + // Returns true if foreign window handle has been destroyed.
|
| + bool HasBeenDestroyed() const;
|
| +
|
| + // Called when foreign window size has changed.
|
| + void OnWindowSizeChanged(const gfx::Size& size);
|
| +
|
| + // Called when foreign window visibility has changed.
|
| + void OnWindowVisibilityChanged(bool visible);
|
| +
|
| + // Called when foreign window has been destroyed.
|
| + void OnWindowDestroyed();
|
| +
|
| + private:
|
| + friend class base::RefCounted<ForeignWindow>;
|
| + virtual ~ForeignWindow();
|
| +
|
| + scoped_ptr<ForeignWindowHost> host_;
|
| + gfx::Size preferred_size_;
|
| + base::WeakPtr<ForeignWindowClientView> client_view_;
|
| + DisplayState display_state_;
|
| + bool destroyed_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ForeignWindow);
|
| +};
|
| +
|
| +} // namespace wm
|
| +
|
| +#endif // WM_FOREIGN_WINDOW_H_
|
|
|