// Copyright 2016 The Chromium Embedded Framework Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be found // in the LICENSE file. #include "libcef/browser/views/view_adapter.h" #include "libcef/browser/views/basic_label_button_impl.h" #include "libcef/browser/views/basic_panel_impl.h" #include "libcef/browser/views/browser_view_impl.h" #include "libcef/browser/views/menu_button_impl.h" #include "libcef/browser/views/scroll_view_impl.h" #include "libcef/browser/views/textfield_impl.h" #include "libcef/browser/views/view_util.h" #include "libcef/browser/views/window_impl.h" // static CefViewAdapter* CefViewAdapter::GetFor(CefRefPtr view) { CefViewAdapter* adapter = nullptr; if (view->AsBrowserView()) { adapter = static_cast(view->AsBrowserView().get()); } else if (view->AsButton()) { CefRefPtr button = view->AsButton(); if (button->AsLabelButton()) { CefRefPtr label_button = button->AsLabelButton(); if (label_button->AsMenuButton()) { adapter = static_cast(label_button->AsMenuButton().get()); } else { adapter = static_cast(label_button.get()); } } } else if (view->AsPanel()) { CefRefPtr panel = view->AsPanel(); if (panel->AsWindow()) { adapter = static_cast(panel->AsWindow().get()); } else { adapter = static_cast(panel.get()); } } else if (view->AsScrollView()) { adapter = static_cast(view->AsScrollView().get()); } else if (view->AsTextfield()) { adapter = static_cast(view->AsTextfield().get()); } DCHECK(adapter); return adapter; } // static CefViewAdapter* CefViewAdapter::GetFor(views::View* view) { CefRefPtr cef_view = view_util::GetFor(view, false); if (cef_view) return GetFor(cef_view); return nullptr; }