Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / view_type_utils.cc
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:
20   explicit ViewTypeUserData(ViewType type) : type_(type) {}
21   ~ViewTypeUserData() override {}
22   ViewType type() { return type_; }
23
24  private:
25   ViewType type_;
26 };
27
28 }  // namespace
29
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
40 void SetViewType(WebContents* tab, ViewType type) {
41   tab->SetUserData(&kViewTypeUserDataKey, new ViewTypeUserData(type));
42 }
43
44 }  // namespace extensions