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)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 SetViewType(WebContents * tab,ViewType type)40void SetViewType(WebContents* tab, ViewType type) { 41 tab->SetUserData(&kViewTypeUserDataKey, new ViewTypeUserData(type)); 42 } 43 44 } // namespace chrome 45