1// Copyright (c) 2013 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#ifndef CONTENT_COMMON_WEBPLUGIN_GEOMETRY_H_
6#define CONTENT_COMMON_WEBPLUGIN_GEOMETRY_H_
7
8#include <vector>
9
10#include "base/basictypes.h"
11#include "ui/gfx/native_widget_types.h"
12#include "ui/gfx/rect.h"
13
14namespace content {
15
16// Describes the new location for a plugin window.
17struct WebPluginGeometry {
18  WebPluginGeometry();
19  ~WebPluginGeometry();
20
21  bool Equals(const WebPluginGeometry& rhs) const;
22
23  // On Windows, this is the plugin window in the plugin process.
24  // On X11, this is the XID of the plugin-side GtkPlug containing the
25  // GtkSocket hosting the actual plugin window.
26  //
27  // On Mac OS X, all of the plugin types are currently "windowless"
28  // (window == 0) except for the special case of the GPU plugin,
29  // which currently performs rendering on behalf of the Pepper 3D API
30  // and WebGL. The GPU plugin uses a simple integer for the
31  // PluginWindowHandle which is used to map to a side data structure
32  // containing information about the plugin. Soon this plugin will be
33  // generalized, at which point this mechanism will be rethought or
34  // removed.
35  gfx::PluginWindowHandle window;
36  gfx::Rect window_rect;
37  // Clip rect (include) and cutouts (excludes), relative to
38  // window_rect origin.
39  gfx::Rect clip_rect;
40  std::vector<gfx::Rect> cutout_rects;
41  bool rects_valid;
42  bool visible;
43};
44
45}  // namespace content
46
47#endif  // CONTENT_COMMON_WEBPLUGIN_GEOMETRY_H_
48