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