11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/views/controls/native/native_view_host_test_base.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/views/controls/native/native_view_host.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/views/widget/widget.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace views {
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace test {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Testing wrapper of the NativeViewHost.
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass NativeViewHostTestBase::NativeViewHostTesting : public NativeViewHost {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  explicit NativeViewHostTesting(NativeViewHostTestBase* owner)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      : owner_(owner) {}
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~NativeViewHostTesting() { owner_->host_destroyed_count_++; }
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private:
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  NativeViewHostTestBase* owner_;
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DISALLOW_COPY_AND_ASSIGN(NativeViewHostTesting);
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNativeViewHostTestBase::NativeViewHostTestBase() : host_destroyed_count_(0) {
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNativeViewHostTestBase::~NativeViewHostTestBase() {
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid NativeViewHostTestBase::CreateTopLevel() {
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  toplevel_.reset(new Widget);
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Widget::InitParams toplevel_params =
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      CreateParams(Widget::InitParams::TYPE_WINDOW);
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  toplevel_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  toplevel_->Init(toplevel_params);
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid NativeViewHostTestBase::CreateTestingHost() {
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  host_.reset(new NativeViewHostTesting(this));
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciWidget* NativeViewHostTestBase::CreateChildForHost(
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    gfx::NativeView native_parent_view,
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    View* parent_view,
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    View* contents_view,
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    NativeViewHost* host) {
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Widget* child = new Widget;
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Widget::InitParams child_params(Widget::InitParams::TYPE_CONTROL);
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  child_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  child_params.parent = native_parent_view;
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  child->Init(child_params);
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  child->SetContentsView(contents_view);
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Owned by |parent_view|.
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  parent_view->AddChildView(host);
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  host->Attach(child->GetNativeView());
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return child;
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid NativeViewHostTestBase::DestroyTopLevel() {
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  toplevel_.reset();
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid NativeViewHostTestBase::DestroyHost() {
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  host_.reset();
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNativeViewHost* NativeViewHostTestBase::ReleaseHost() {
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return host_.release();
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciNativeViewHostWrapper* NativeViewHostTestBase::GetNativeWrapper() {
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return host_->native_wrapper_.get();
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace test
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace views
81