1// Copyright (c) 2012 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#include "extensions/browser/view_type_utils.h"
6
7#include "base/lazy_instance.h"
8#include "content/public/browser/web_contents.h"
9
10using content::WebContents;
11
12namespace extensions {
13
14namespace {
15
16const char kViewTypeUserDataKey[] = "ViewTypeUserData";
17
18class ViewTypeUserData : public base::SupportsUserData::Data {
19 public:
20  explicit ViewTypeUserData(ViewType type) : type_(type) {}
21  virtual ~ViewTypeUserData() {}
22  ViewType type() { return type_; }
23
24 private:
25  ViewType type_;
26};
27
28}  // namespace
29
30ViewType GetViewType(WebContents* tab) {
31  if (!tab)
32    return VIEW_TYPE_INVALID;
33
34  ViewTypeUserData* user_data = static_cast<ViewTypeUserData*>(
35      tab->GetUserData(&kViewTypeUserDataKey));
36
37  return user_data ? user_data->type() : VIEW_TYPE_INVALID;
38}
39
40void SetViewType(WebContents* tab, ViewType type) {
41  tab->SetUserData(&kViewTypeUserDataKey, new ViewTypeUserData(type));
42}
43
44}  // namespace extensions
45