• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
10 using content::WebContents;
11 
12 namespace extensions {
13 
14 namespace {
15 
16 const char kViewTypeUserDataKey[] = "ViewTypeUserData";
17 
18 class ViewTypeUserData : public base::SupportsUserData::Data {
19  public:
ViewTypeUserData(ViewType type)20   explicit ViewTypeUserData(ViewType type) : type_(type) {}
~ViewTypeUserData()21   virtual ~ViewTypeUserData() {}
type()22   ViewType type() { return type_; }
23 
24  private:
25   ViewType type_;
26 };
27 
28 }  // namespace
29 
GetViewType(WebContents * tab)30 ViewType 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 
SetViewType(WebContents * tab,ViewType type)40 void SetViewType(WebContents* tab, ViewType type) {
41   tab->SetUserData(&kViewTypeUserDataKey, new ViewTypeUserData(type));
42 }
43 
44 }  // namespace chrome
45