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

Side by Side Diff: chrome/browser/ui/webui/foreign_session_handler.cc

Issue 2051663003: base::ListValue::Append cleanup: pass unique_ptr instead of the released pointer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 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
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/webui/foreign_session_handler.h" 5 #include "chrome/browser/ui/webui/foreign_session_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <string> 10 #include <string>
11 #include <utility>
11 #include <vector> 12 #include <vector>
12 13
13 #include "base/bind.h" 14 #include "base/bind.h"
14 #include "base/bind_helpers.h" 15 #include "base/bind_helpers.h"
15 #include "base/i18n/time_formatting.h" 16 #include "base/i18n/time_formatting.h"
16 #include "base/metrics/histogram_macros.h" 17 #include "base/metrics/histogram_macros.h"
17 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
18 #include "base/strings/utf_string_conversions.h" 19 #include "base/strings/utf_string_conversions.h"
19 #include "base/time/time.h" 20 #include "base/time/time.h"
20 #include "base/values.h" 21 #include "base/values.h"
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 if (window.tabs.empty()) 105 if (window.tabs.empty())
105 return nullptr; 106 return nullptr;
106 std::unique_ptr<base::ListValue> tab_values(new base::ListValue()); 107 std::unique_ptr<base::ListValue> tab_values(new base::ListValue());
107 // Calculate the last |modification_time| for all entries within a window. 108 // Calculate the last |modification_time| for all entries within a window.
108 base::Time modification_time = window.timestamp; 109 base::Time modification_time = window.timestamp;
109 for (const ::sessions::SessionTab* tab : window.tabs) { 110 for (const ::sessions::SessionTab* tab : window.tabs) {
110 std::unique_ptr<base::DictionaryValue> tab_value(SessionTabToValue(*tab)); 111 std::unique_ptr<base::DictionaryValue> tab_value(SessionTabToValue(*tab));
111 if (tab_value.get()) { 112 if (tab_value.get()) {
112 modification_time = std::max(modification_time, 113 modification_time = std::max(modification_time,
113 tab->timestamp); 114 tab->timestamp);
114 tab_values->Append(tab_value.release()); 115 tab_values->Append(std::move(tab_value));
115 } 116 }
116 } 117 }
117 if (tab_values->GetSize() == 0) 118 if (tab_values->GetSize() == 0)
118 return nullptr; 119 return nullptr;
119 std::unique_ptr<base::DictionaryValue> dictionary( 120 std::unique_ptr<base::DictionaryValue> dictionary(
120 BuildWindowData(window.timestamp, window.window_id.id())); 121 BuildWindowData(window.timestamp, window.window_id.id()));
121 dictionary->Set("tabs", tab_values.release()); 122 dictionary->Set("tabs", tab_values.release());
122 return dictionary; 123 return dictionary;
123 } 124 }
124 125
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 299
299 std::unique_ptr<base::ListValue> window_list(new base::ListValue()); 300 std::unique_ptr<base::ListValue> window_list(new base::ListValue());
300 const std::string group_name = 301 const std::string group_name =
301 base::FieldTrialList::FindFullName("TabSyncByRecency"); 302 base::FieldTrialList::FindFullName("TabSyncByRecency");
302 if (group_name != "Enabled") { 303 if (group_name != "Enabled") {
303 // Order tabs by visual order within window. 304 // Order tabs by visual order within window.
304 for (auto map_iter : session->windows) { 305 for (auto map_iter : session->windows) {
305 std::unique_ptr<base::DictionaryValue> window_data( 306 std::unique_ptr<base::DictionaryValue> window_data(
306 SessionWindowToValue(*map_iter.second)); 307 SessionWindowToValue(*map_iter.second));
307 if (window_data.get()) 308 if (window_data.get())
308 window_list->Append(window_data.release()); 309 window_list->Append(std::move(window_data));
309 } 310 }
310 } else { 311 } else {
311 // Order tabs by recency. This involves creating a synthetic singleton 312 // Order tabs by recency. This involves creating a synthetic singleton
312 // window that contains all the tabs of the session. 313 // window that contains all the tabs of the session.
313 base::Time modification_time; 314 base::Time modification_time;
314 std::vector<const ::sessions::SessionTab*> tabs; 315 std::vector<const ::sessions::SessionTab*> tabs;
315 open_tabs->GetForeignSessionTabs(session_tag, &tabs); 316 open_tabs->GetForeignSessionTabs(session_tag, &tabs);
316 std::unique_ptr<base::ListValue> tab_values(new base::ListValue()); 317 std::unique_ptr<base::ListValue> tab_values(new base::ListValue());
317 for (const ::sessions::SessionTab* tab : tabs) { 318 for (const ::sessions::SessionTab* tab : tabs) {
318 std::unique_ptr<base::DictionaryValue> tab_value( 319 std::unique_ptr<base::DictionaryValue> tab_value(
319 SessionTabToValue(*tab)); 320 SessionTabToValue(*tab));
320 if (tab_value.get()) { 321 if (tab_value.get()) {
321 modification_time = std::max(modification_time, tab->timestamp); 322 modification_time = std::max(modification_time, tab->timestamp);
322 tab_values->Append(tab_value.release()); 323 tab_values->Append(std::move(tab_value));
323 } 324 }
324 } 325 }
325 if (tab_values->GetSize() != 0) { 326 if (tab_values->GetSize() != 0) {
326 std::unique_ptr<base::DictionaryValue> window_data( 327 std::unique_ptr<base::DictionaryValue> window_data(
327 BuildWindowData(modification_time, 1)); 328 BuildWindowData(modification_time, 1));
328 window_data->Set("tabs", tab_values.release()); 329 window_data->Set("tabs", tab_values.release());
329 window_list->Append(window_data.release()); 330 window_list->Append(std::move(window_data));
330 } 331 }
331 } 332 }
332 333
333 session_data->Set("windows", window_list.release()); 334 session_data->Set("windows", window_list.release());
334 session_list.Append(session_data.release()); 335 session_list.Append(std::move(session_data));
335 } 336 }
336 } 337 }
337 base::FundamentalValue tab_sync_enabled(IsTabSyncEnabled()); 338 base::FundamentalValue tab_sync_enabled(IsTabSyncEnabled());
338 web_ui()->CallJavascriptFunctionUnsafe("setForeignSessions", session_list, 339 web_ui()->CallJavascriptFunctionUnsafe("setForeignSessions", session_list,
339 tab_sync_enabled); 340 tab_sync_enabled);
340 } 341 }
341 342
342 void ForeignSessionHandler::HandleOpenForeignSession( 343 void ForeignSessionHandler::HandleOpenForeignSession(
343 const base::ListValue* args) { 344 const base::ListValue* args) {
344 size_t num_args = args->GetSize(); 345 size_t num_args = args->GetSize();
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 // collapsed state persists. 431 // collapsed state persists.
431 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs(); 432 PrefService* prefs = Profile::FromWebUI(web_ui())->GetPrefs();
432 DictionaryPrefUpdate update(prefs, prefs::kNtpCollapsedForeignSessions); 433 DictionaryPrefUpdate update(prefs, prefs::kNtpCollapsedForeignSessions);
433 if (is_collapsed) 434 if (is_collapsed)
434 update.Get()->SetBoolean(session_tag, true); 435 update.Get()->SetBoolean(session_tag, true);
435 else 436 else
436 update.Get()->Remove(session_tag, NULL); 437 update.Get()->Remove(session_tag, NULL);
437 } 438 }
438 439
439 } // namespace browser_sync 440 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698