14a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file.
44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
54a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_NOTIFICATIONS_BALLOON_VIEW_HOST_H_
64a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_NOTIFICATIONS_BALLOON_VIEW_HOST_H_
74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once
84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
94a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/notifications/balloon_host.h"
104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/native/native_view_host.h"
114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// BalloonViewHost class is a delegate to the renderer host for the HTML
134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// notification.  When initialized it creates a new RenderViewHost and loads
144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// the contents of the toast into it.  It also handles links within the toast,
154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// loading them into a new tab.
164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BalloonViewHost : public BalloonHost {
174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public:
184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  explicit BalloonViewHost(Balloon* balloon);
194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual ~BalloonViewHost() {
214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch     Shutdown();
224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  void SetPreferredSize(const gfx::Size& size) {
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    native_host_->SetPreferredSize(size);
264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Accessors.
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  views::View* view() {
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    return native_host_;
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  gfx::NativeView native_view() const {
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch    return native_host_->native_view();
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  }
364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // Initialize the view, parented to |parent|, and show it.
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  void Init(gfx::NativeView parent);
394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected:
414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void InitRenderWidgetHostView();
4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual RenderWidgetHostView* render_widget_host_view() const;
434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private:
454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The platform-specific widget host view.  Pointer is owned by the RVH.
464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  RenderWidgetHostView* render_widget_host_view_;
474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The views-specific host view. Pointer owned by the views hierarchy.
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  views::NativeViewHost* native_host_;
504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // The handle to the parent view.
524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  gfx::NativeView parent_native_view_;
534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(BalloonViewHost);
554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch};
564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#endif  // CHROME_BROWSER_UI_VIEWS_NOTIFICATIONS_BALLOON_VIEW_HOST_H_
58