OLD | NEW |
| (Empty) |
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 "chrome/browser/ui/gtk/tabs/drag_data.h" | |
6 | |
7 #include "chrome/browser/ui/gtk/tabs/tab_gtk.h" | |
8 #include "chrome/browser/ui/tabs/tab_strip_model.h" | |
9 #include "content/public/browser/web_contents.h" | |
10 #include "content/public/browser/web_contents_delegate.h" | |
11 | |
12 using content::WebContents; | |
13 | |
14 DraggedTabData::DraggedTabData() | |
15 : tab_(NULL), | |
16 contents_(NULL), | |
17 original_delegate_(NULL), | |
18 source_model_index_(-1), | |
19 pinned_(false), | |
20 mini_(false) { | |
21 } | |
22 | |
23 DraggedTabData::DraggedTabData(TabGtk* tab, | |
24 WebContents* contents, | |
25 content::WebContentsDelegate* original_delegate, | |
26 int source_model_index, | |
27 bool pinned, | |
28 bool mini) | |
29 : tab_(tab), | |
30 contents_(contents), | |
31 original_delegate_(original_delegate), | |
32 source_model_index_(source_model_index), | |
33 pinned_(pinned), | |
34 mini_(mini) { | |
35 } | |
36 | |
37 DraggedTabData::~DraggedTabData() { | |
38 } | |
39 | |
40 void DraggedTabData::ResetDelegate() { | |
41 contents_->SetDelegate(original_delegate_); | |
42 } | |
43 | |
44 DragData::DragData(std::vector<DraggedTabData> drag_data, int source_tab_index) | |
45 : drag_data_(drag_data), | |
46 source_tab_index_(source_tab_index), | |
47 non_mini_tab_count_(0), | |
48 mini_tab_count_(0) { | |
49 GetNumberOfMiniNonMiniTabs(0, drag_data_.size(), | |
50 &mini_tab_count_, &non_mini_tab_count_); | |
51 } | |
52 | |
53 DragData::~DragData() { | |
54 } | |
55 | |
56 std::vector<TabGtk*> DragData::GetDraggedTabs() const { | |
57 std::vector<TabGtk*> tabs; | |
58 for (size_t i = 0; i < drag_data_.size(); ++i) { | |
59 if (drag_data_[i].tab_) | |
60 tabs.push_back(drag_data_[i].tab_); | |
61 } | |
62 return tabs; | |
63 } | |
64 | |
65 std::vector<WebContents*> DragData::GetDraggedTabsContents() const { | |
66 std::vector<WebContents*> web_contentses; | |
67 for (size_t i = 0; i < drag_data_.size(); ++i) { | |
68 if (drag_data_[i].contents_) | |
69 web_contentses.push_back(drag_data_[i].contents_); | |
70 } | |
71 return web_contentses; | |
72 } | |
73 | |
74 void DragData::GetNumberOfMiniNonMiniTabs( | |
75 int from, int to, int* mini, int* non_mini) const { | |
76 DCHECK(to <= static_cast<int>(drag_data_.size())); | |
77 | |
78 *mini = 0; | |
79 *non_mini = 0; | |
80 for (int i = from; i < to; ++i) { | |
81 if (drag_data_[i].mini_) | |
82 (*mini)++; | |
83 else | |
84 (*non_mini)++; | |
85 } | |
86 } | |
87 | |
88 int DragData::GetAddTypesForDraggedTabAt(size_t index) { | |
89 int add_types = TabStripModel::ADD_NONE; | |
90 if (get(index)->pinned_) | |
91 add_types |= TabStripModel::ADD_PINNED; | |
92 if (static_cast<int>(index) == source_tab_index_) | |
93 add_types |= TabStripModel::ADD_ACTIVE; | |
94 return add_types; | |
95 } | |
96 | |
97 WebContents* DragData::GetSourceWebContents() { | |
98 return GetSourceTabData()->contents_; | |
99 } | |
100 | |
101 DraggedTabData* DragData::GetSourceTabData() { | |
102 return get(source_tab_index_); | |
103 } | |
OLD | NEW |