1// Copyright 2017 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#import "chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views_mac.h"
6
7#include "chrome/browser/ui/sad_tab_helper.h"
8#include "chrome/browser/ui/tab_contents/chrome_web_contents_view_handle_drop.h"
9#include "chrome/browser/ui/views/sad_tab_view.h"
10#include "chrome/browser/ui/views/tab_contents/chrome_web_contents_view_focus_helper.h"
11#include "content/public/browser/web_contents.h"
12#include "ui/views/widget/widget.h"
13
14ChromeWebContentsViewDelegateViewsMac::ChromeWebContentsViewDelegateViewsMac(
15    content::WebContents* web_contents)
16    : ChromeWebContentsViewDelegateMac(web_contents),
17      web_contents_(web_contents) {
18  ChromeWebContentsViewFocusHelper::CreateForWebContents(web_contents);
19}
20
21ChromeWebContentsViewDelegateViewsMac::
22    ~ChromeWebContentsViewDelegateViewsMac() {
23}
24
25ChromeWebContentsViewFocusHelper*
26ChromeWebContentsViewDelegateViewsMac::GetFocusHelper() const {
27  ChromeWebContentsViewFocusHelper* helper =
28      ChromeWebContentsViewFocusHelper::FromWebContents(web_contents_);
29  DCHECK(helper);
30  return helper;
31}
32
33void ChromeWebContentsViewDelegateViewsMac::StoreFocus() {
34  GetFocusHelper()->StoreFocus();
35}
36
37bool ChromeWebContentsViewDelegateViewsMac::RestoreFocus() {
38  return GetFocusHelper()->RestoreFocus();
39}
40
41void ChromeWebContentsViewDelegateViewsMac::ResetStoredFocus() {
42  GetFocusHelper()->ResetStoredFocus();
43}
44
45bool ChromeWebContentsViewDelegateViewsMac::Focus() {
46  return GetFocusHelper()->Focus();
47}
48
49bool ChromeWebContentsViewDelegateViewsMac::TakeFocus(bool reverse) {
50  return GetFocusHelper()->TakeFocus(reverse);
51}
52
53void ChromeWebContentsViewDelegateViewsMac::OnPerformDrop(
54    const content::DropData& drop_data,
55    DropCompletionCallback callback) {
56  HandleOnPerformDrop(web_contents_, drop_data, std::move(callback));
57}
58
59content::WebContentsViewDelegate* CreateWebContentsViewDelegate(
60    content::WebContents* web_contents) {
61  return new ChromeWebContentsViewDelegateViewsMac(web_contents);
62}
63