contents_web_view.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2014 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 CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_WEB_VIEW_H_ 6#define CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_WEB_VIEW_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "base/memory/scoped_ptr.h" 11#include "chrome/browser/ui/views/frame/web_contents_close_handler_delegate.h" 12#include "ui/compositor/layer_owner_delegate.h" 13#include "ui/views/controls/webview/webview.h" 14 15class StatusBubbleViews; 16 17namespace ui { 18class LayerTreeOwner; 19} 20 21// ContentsWebView is used to present the WebContents of the active tab. 22class ContentsWebView 23 : public views::WebView, 24 public ui::LayerOwnerDelegate, 25 public WebContentsCloseHandlerDelegate { 26 public: 27 explicit ContentsWebView(content::BrowserContext* browser_context); 28 virtual ~ContentsWebView(); 29 30 // Sets the status bubble, which should be repositioned every time 31 // this view changes visible bounds. 32 void SetStatusBubble(StatusBubbleViews* status_bubble); 33 34 // WebView overrides: 35 virtual bool GetNeedsNotificationWhenVisibleBoundsChange() const OVERRIDE; 36 virtual void OnVisibleBoundsChanged() OVERRIDE; 37 virtual void ViewHierarchyChanged(const ViewHierarchyChangedDetails& details) 38 OVERRIDE; 39 virtual void OnThemeChanged() OVERRIDE; 40 41 // ui::LayerOwnerDelegate overrides: 42 virtual void OnLayerRecreated(ui::Layer* old_layer, 43 ui::Layer* new_layer) OVERRIDE; 44 45 // WebContentsCloseHandlerDelegate overrides: 46 virtual void CloneWebContentsLayer() OVERRIDE; 47 virtual void DestroyClonedLayer() OVERRIDE; 48 49 private: 50 StatusBubbleViews* status_bubble_; 51 52 scoped_ptr<ui::LayerTreeOwner> cloned_layer_tree_; 53 54 DISALLOW_COPY_AND_ASSIGN(ContentsWebView); 55}; 56 57#endif // CHROME_BROWSER_UI_VIEWS_FRAME_CONTENTS_WEB_VIEW_H_ 58