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