Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Side by Side Diff: chrome/browser/ui/tabs/pinned_tab_codec.cc

Issue 10917026: Switch Extensions::TabHelper to use WebContents, WebContentsUserData. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase only Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/tabs/pinned_tab_codec.h" 5 #include "chrome/browser/ui/tabs/pinned_tab_codec.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/extensions/tab_helper.h" 8 #include "chrome/browser/extensions/tab_helper.h"
9 #include "chrome/browser/prefs/pref_service.h" 9 #include "chrome/browser/prefs/pref_service.h"
10 #include "chrome/browser/prefs/scoped_user_pref_update.h" 10 #include "chrome/browser/prefs/scoped_user_pref_update.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 values->Append(value.release()); 45 values->Append(value.release());
46 } 46 }
47 47
48 // Adds a DictionaryValue to |values| representing the pinned tab at the 48 // Adds a DictionaryValue to |values| representing the pinned tab at the
49 // specified index. 49 // specified index.
50 static void EncodePinnedTab(TabStripModel* model, 50 static void EncodePinnedTab(TabStripModel* model,
51 int index, 51 int index,
52 ListValue* values) { 52 ListValue* values) {
53 scoped_ptr<DictionaryValue> value(new DictionaryValue()); 53 scoped_ptr<DictionaryValue> value(new DictionaryValue());
54 54
55 TabContents* tab_contents = model->GetTabContentsAt(index); 55 content::WebContents* web_contents =
56 model->GetTabContentsAt(index)->web_contents();
56 if (model->IsAppTab(index)) { 57 if (model->IsAppTab(index)) {
57 const extensions::Extension* extension = 58 const extensions::Extension* extension =
58 tab_contents->extension_tab_helper()->extension_app(); 59 extensions::TabHelper::FromWebContents(web_contents)->extension_app();
59 DCHECK(extension); 60 DCHECK(extension);
60 value->SetString(kAppID, extension->id()); 61 value->SetString(kAppID, extension->id());
61 // For apps we use the launch url. We do this for the following reason: 62 // For apps we use the launch url. We do this because the user is
62 // . the user is effectively restarting the app, so that returning them to 63 // effectively restarting the app, so returning them to the app's launch
63 // the app's launch page seems closest to what they expect. 64 // page seems closest to what they expect.
64 value->SetString(kURL, extension->GetFullLaunchURL().spec()); 65 value->SetString(kURL, extension->GetFullLaunchURL().spec());
65 values->Append(value.release()); 66 values->Append(value.release());
66 } else { 67 } else {
67 NavigationEntry* entry = 68 NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
68 tab_contents->web_contents()->GetController().GetActiveEntry(); 69 if (!entry && web_contents->GetController().GetEntryCount())
69 if (!entry && tab_contents->web_contents()->GetController().GetEntryCount()) 70 entry = web_contents->GetController().GetEntryAtIndex(0);
70 entry = tab_contents->web_contents()->GetController().GetEntryAtIndex(0);
71 if (entry) { 71 if (entry) {
72 value->SetString(kURL, entry->GetURL().spec()); 72 value->SetString(kURL, entry->GetURL().spec());
73 values->Append(value.release()); 73 values->Append(value.release());
74 } 74 }
75 } 75 }
76 } 76 }
77 77
78 // Invokes EncodePinnedTab for each pinned tab in browser. 78 // Invokes EncodePinnedTab for each pinned tab in browser.
79 static void EncodePinnedTabs(Browser* browser, ListValue* values) { 79 static void EncodePinnedTabs(Browser* browser, ListValue* values) {
80 TabStripModel* tab_model = browser->tab_strip_model(); 80 TabStripModel* tab_model = browser->tab_strip_model();
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 for (size_t i = 0, max = tabs_list->GetSize(); i < max; ++i) { 154 for (size_t i = 0, max = tabs_list->GetSize(); i < max; ++i) {
155 const base::DictionaryValue* tab_values = NULL; 155 const base::DictionaryValue* tab_values = NULL;
156 if (tabs_list->GetDictionary(i, &tab_values)) { 156 if (tabs_list->GetDictionary(i, &tab_values)) {
157 StartupTab tab; 157 StartupTab tab;
158 if (DecodeTab(*tab_values, &tab)) 158 if (DecodeTab(*tab_values, &tab))
159 results.push_back(tab); 159 results.push_back(tab);
160 } 160 }
161 } 161 }
162 return results; 162 return results;
163 } 163 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/tab_contents/tab_contents.cc ('k') | chrome/browser/ui/tabs/tab_strip_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698