diff options
Diffstat (limited to 'chrome/browser/ui/webui/ntp/value_helper.cc')
-rw-r--r-- | chrome/browser/ui/webui/ntp/value_helper.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/chrome/browser/ui/webui/ntp/value_helper.cc b/chrome/browser/ui/webui/ntp/value_helper.cc new file mode 100644 index 0000000..426cdcd --- /dev/null +++ b/chrome/browser/ui/webui/ntp/value_helper.cc @@ -0,0 +1,47 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/webui/ntp/value_helper.h" + +#include "chrome/browser/ui/webui/ntp/new_tab_ui.h" +#include "chrome/common/url_constants.h" + +bool ValueHelper::TabToValue( + const TabRestoreService::Tab& tab, + DictionaryValue* dictionary) { + if (tab.navigations.empty()) + return false; + + const TabNavigation& current_navigation = + tab.navigations.at(tab.current_navigation_index); + if (current_navigation.virtual_url() == GURL(chrome::kChromeUINewTabURL)) + return false; + NewTabUI::SetURLTitleAndDirection(dictionary, current_navigation.title(), + current_navigation.virtual_url()); + dictionary->SetString("type", "tab"); + dictionary->SetDouble("timestamp", tab.timestamp.ToDoubleT()); + return true; +} + +bool ValueHelper::WindowToValue( + const TabRestoreService::Window& window, + DictionaryValue* dictionary) { + if (window.tabs.empty()) { + NOTREACHED(); + return false; + } + scoped_ptr<ListValue> tab_values(new ListValue()); + for (size_t i = 0; i < window.tabs.size(); ++i) { + scoped_ptr<DictionaryValue> tab_value(new DictionaryValue()); + if (TabToValue(window.tabs[i], tab_value.get())) + tab_values->Append(tab_value.release()); + } + if (tab_values->GetSize() == 0) + return false; + dictionary->SetString("type", "window"); + dictionary->SetDouble("timestamp", window.timestamp.ToDoubleT()); + dictionary->Set("tabs", tab_values.release()); + return true; +} + |