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