| OLD | NEW |
| 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/history_ui.h" | 5 #include "chrome/browser/ui/webui/history_ui.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 source->AddBoolean("isUserSignedIn", is_authenticated); | 129 source->AddBoolean("isUserSignedIn", is_authenticated); |
| 130 source->AddLocalizedString("collapseSessionMenuItemText", | 130 source->AddLocalizedString("collapseSessionMenuItemText", |
| 131 IDS_NEW_TAB_OTHER_SESSIONS_COLLAPSE_SESSION); | 131 IDS_NEW_TAB_OTHER_SESSIONS_COLLAPSE_SESSION); |
| 132 source->AddLocalizedString("expandSessionMenuItemText", | 132 source->AddLocalizedString("expandSessionMenuItemText", |
| 133 IDS_NEW_TAB_OTHER_SESSIONS_EXPAND_SESSION); | 133 IDS_NEW_TAB_OTHER_SESSIONS_EXPAND_SESSION); |
| 134 source->AddLocalizedString("restoreSessionMenuItemText", | 134 source->AddLocalizedString("restoreSessionMenuItemText", |
| 135 IDS_NEW_TAB_OTHER_SESSIONS_OPEN_ALL); | 135 IDS_NEW_TAB_OTHER_SESSIONS_OPEN_ALL); |
| 136 source->AddLocalizedString("xMore", IDS_OTHER_DEVICES_X_MORE); | 136 source->AddLocalizedString("xMore", IDS_OTHER_DEVICES_X_MORE); |
| 137 source->AddLocalizedString("loading", IDS_HISTORY_LOADING); | 137 source->AddLocalizedString("loading", IDS_HISTORY_LOADING); |
| 138 source->AddLocalizedString("title", IDS_HISTORY_TITLE); | 138 source->AddLocalizedString("title", IDS_HISTORY_TITLE); |
| 139 source->AddLocalizedString("context", IDS_HISTORY_CONTEXT); |
| 139 source->AddLocalizedString("newest", IDS_HISTORY_NEWEST); | 140 source->AddLocalizedString("newest", IDS_HISTORY_NEWEST); |
| 140 source->AddLocalizedString("newer", IDS_HISTORY_NEWER); | 141 source->AddLocalizedString("newer", IDS_HISTORY_NEWER); |
| 141 source->AddLocalizedString("older", IDS_HISTORY_OLDER); | 142 source->AddLocalizedString("older", IDS_HISTORY_OLDER); |
| 142 source->AddLocalizedString("searchResultsFor", IDS_HISTORY_SEARCHRESULTSFOR); | 143 source->AddLocalizedString("searchResultsFor", IDS_HISTORY_SEARCHRESULTSFOR); |
| 143 source->AddLocalizedString("searchResult", IDS_HISTORY_SEARCH_RESULT); | 144 source->AddLocalizedString("searchResult", IDS_HISTORY_SEARCH_RESULT); |
| 144 source->AddLocalizedString("searchResults", IDS_HISTORY_SEARCH_RESULTS); | 145 source->AddLocalizedString("searchResults", IDS_HISTORY_SEARCH_RESULTS); |
| 145 source->AddLocalizedString("foundSearchResults", | 146 source->AddLocalizedString("foundSearchResults", |
| 146 IDS_HISTORY_FOUND_SEARCH_RESULTS); | 147 IDS_HISTORY_FOUND_SEARCH_RESULTS); |
| 147 source->AddLocalizedString("history", IDS_HISTORY_BROWSERESULTS); | 148 source->AddLocalizedString("history", IDS_HISTORY_BROWSERESULTS); |
| 148 source->AddLocalizedString("cont", IDS_HISTORY_CONTINUED); | 149 source->AddLocalizedString("cont", IDS_HISTORY_CONTINUED); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 } // namespace | 286 } // namespace |
| 286 | 287 |
| 287 //////////////////////////////////////////////////////////////////////////////// | 288 //////////////////////////////////////////////////////////////////////////////// |
| 288 // | 289 // |
| 289 // BrowsingHistoryHandler | 290 // BrowsingHistoryHandler |
| 290 // | 291 // |
| 291 //////////////////////////////////////////////////////////////////////////////// | 292 //////////////////////////////////////////////////////////////////////////////// |
| 292 | 293 |
| 293 BrowsingHistoryHandler::HistoryEntry::HistoryEntry( | 294 BrowsingHistoryHandler::HistoryEntry::HistoryEntry( |
| 294 BrowsingHistoryHandler::HistoryEntry::EntryType entry_type, | 295 BrowsingHistoryHandler::HistoryEntry::EntryType entry_type, |
| 295 const GURL& url, const base::string16& title, base::Time time, | 296 const GURL& url, const base::string16& title, history::HistoryContext contex
t, base::Time time, |
| 296 const std::string& client_id, bool is_search_result, | 297 const std::string& client_id, bool is_search_result, |
| 297 const base::string16& snippet, bool blocked_visit, | 298 const base::string16& snippet, bool blocked_visit, |
| 298 const std::string& accept_languages) { | 299 const std::string& accept_languages) { |
| 299 this->entry_type = entry_type; | 300 this->entry_type = entry_type; |
| 300 this->url = url; | 301 this->url = url; |
| 301 this->title = title; | 302 this->title = title; |
| 303 this->context = context; |
| 302 this->time = time; | 304 this->time = time; |
| 303 this->client_id = client_id; | 305 this->client_id = client_id; |
| 304 all_timestamps.insert(time.ToInternalValue()); | 306 all_timestamps.insert(time.ToInternalValue()); |
| 305 this->is_search_result = is_search_result; | 307 this->is_search_result = is_search_result; |
| 306 this->snippet = snippet; | 308 this->snippet = snippet; |
| 307 this->blocked_visit = blocked_visit; | 309 this->blocked_visit = blocked_visit; |
| 308 this->accept_languages = accept_languages; | 310 this->accept_languages = accept_languages; |
| 309 } | 311 } |
| 310 | 312 |
| 311 BrowsingHistoryHandler::HistoryEntry::HistoryEntry() | 313 BrowsingHistoryHandler::HistoryEntry::HistoryEntry() |
| 312 : entry_type(EMPTY_ENTRY), is_search_result(false), blocked_visit(false) { | 314 : entry_type(EMPTY_ENTRY), is_search_result(false), blocked_visit(false) { |
| 313 } | 315 } |
| 314 | 316 |
| 315 BrowsingHistoryHandler::HistoryEntry::~HistoryEntry() { | 317 BrowsingHistoryHandler::HistoryEntry::~HistoryEntry() { |
| 316 } | 318 } |
| 317 | 319 |
| 318 void BrowsingHistoryHandler::HistoryEntry::SetUrlAndTitle( | 320 void BrowsingHistoryHandler::HistoryEntry::SetUrlAndTitle( |
| 319 base::DictionaryValue* result) const { | 321 base::DictionaryValue* result) const { |
| 320 result->SetString("url", url.spec()); | 322 result->SetString("url", url.spec()); |
| 323 result->SetInteger("context", static_cast<int>(context)); |
| 321 | 324 |
| 322 bool using_url_as_the_title = false; | 325 bool using_url_as_the_title = false; |
| 323 base::string16 title_to_set(title); | 326 base::string16 title_to_set(title); |
| 324 if (title.empty()) { | 327 if (title.empty()) { |
| 325 using_url_as_the_title = true; | 328 using_url_as_the_title = true; |
| 326 title_to_set = base::UTF8ToUTF16(url.spec()); | 329 title_to_set = base::UTF8ToUTF16(url.spec()); |
| 327 } | 330 } |
| 328 | 331 |
| 329 // Since the title can contain BiDi text, we need to mark the text as either | 332 // Since the title can contain BiDi text, we need to mark the text as either |
| 330 // RTL or LTR, depending on the characters in the string. If we use the URL | 333 // RTL or LTR, depending on the characters in the string. If we use the URL |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 else if (range == BrowsingHistoryHandler::WEEK) | 554 else if (range == BrowsingHistoryHandler::WEEK) |
| 552 SetQueryTimeInWeeks(offset, &options); | 555 SetQueryTimeInWeeks(offset, &options); |
| 553 | 556 |
| 554 double end_time; | 557 double end_time; |
| 555 if (!args->GetDouble(3, &end_time)) { | 558 if (!args->GetDouble(3, &end_time)) { |
| 556 NOTREACHED() << "Failed to convert argument 3. "; | 559 NOTREACHED() << "Failed to convert argument 3. "; |
| 557 return; | 560 return; |
| 558 } | 561 } |
| 559 if (end_time) | 562 if (end_time) |
| 560 options.end_time = base::Time::FromJsTime(end_time); | 563 options.end_time = base::Time::FromJsTime(end_time); |
| 564 int context; |
| 565 if (!ExtractIntegerValueAtIndex(args, 4, &context)) { |
| 566 NOTREACHED() << "Failed to convert argument 4."; |
| 567 return; |
| 568 } |
| 569 if (context) |
| 570 options.context = static_cast<history::HistoryContext>(context); |
| 561 | 571 |
| 562 if (!ExtractIntegerValueAtIndex(args, 4, &options.max_count)) { | 572 if (!ExtractIntegerValueAtIndex(args, 5, &options.max_count)) { |
| 563 NOTREACHED() << "Failed to convert argument 4."; | 573 NOTREACHED() << "Failed to convert argument 5."; |
| 564 return; | 574 return; |
| 565 } | 575 } |
| 566 | 576 |
| 567 options.duplicate_policy = history::QueryOptions::REMOVE_DUPLICATES_PER_DAY; | 577 options.duplicate_policy = history::QueryOptions::REMOVE_DUPLICATES_PER_DAY; |
| 578 |
| 568 QueryHistory(search_text, options); | 579 QueryHistory(search_text, options); |
| 569 } | 580 } |
| 570 | 581 |
| 571 void BrowsingHistoryHandler::HandleRemoveVisits(const base::ListValue* args) { | 582 void BrowsingHistoryHandler::HandleRemoveVisits(const base::ListValue* args) { |
| 572 Profile* profile = Profile::FromWebUI(web_ui()); | 583 Profile* profile = Profile::FromWebUI(web_ui()); |
| 573 // TODO(davidben): history.js is not aware of this failure and will still | 584 // TODO(davidben): history.js is not aware of this failure and will still |
| 574 // override |deleteCompleteCallback_|. | 585 // override |deleteCompleteCallback_|. |
| 575 if (delete_task_tracker_.HasTrackedTasks() || | 586 if (delete_task_tracker_.HasTrackedTasks() || |
| 576 has_pending_delete_request_ || | 587 has_pending_delete_request_ || |
| 577 !profile->GetPrefs()->GetBoolean(prefs::kAllowDeletingBrowserHistory)) { | 588 !profile->GetPrefs()->GetBoolean(prefs::kAllowDeletingBrowserHistory)) { |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 const base::string16& search_text, | 810 const base::string16& search_text, |
| 800 const history::QueryOptions& options, | 811 const history::QueryOptions& options, |
| 801 history::QueryResults* results) { | 812 history::QueryResults* results) { |
| 802 DCHECK_EQ(0U, query_results_.size()); | 813 DCHECK_EQ(0U, query_results_.size()); |
| 803 query_results_.reserve(results->size()); | 814 query_results_.reserve(results->size()); |
| 804 const std::string accept_languages = GetAcceptLanguages(); | 815 const std::string accept_languages = GetAcceptLanguages(); |
| 805 | 816 |
| 806 for (size_t i = 0; i < results->size(); ++i) { | 817 for (size_t i = 0; i < results->size(); ++i) { |
| 807 history::URLResult const &page = (*results)[i]; | 818 history::URLResult const &page = (*results)[i]; |
| 808 // TODO(dubroy): Use sane time (crbug.com/146090) here when it's ready. | 819 // TODO(dubroy): Use sane time (crbug.com/146090) here when it's ready. |
| 820 printf("\npage.context() %d %s\n", page.context(), page.url().spec().c_str()
); |
| 809 query_results_.push_back( | 821 query_results_.push_back( |
| 810 HistoryEntry( | 822 HistoryEntry( |
| 811 HistoryEntry::LOCAL_ENTRY, | 823 HistoryEntry::LOCAL_ENTRY, |
| 812 page.url(), | 824 page.url(), |
| 813 page.title(), | 825 page.title(), |
| 826 page.context(), |
| 814 page.visit_time(), | 827 page.visit_time(), |
| 815 std::string(), | 828 std::string(), |
| 816 !search_text.empty(), | 829 !search_text.empty(), |
| 817 page.snippet().text(), | 830 page.snippet().text(), |
| 818 page.blocked_visit(), | 831 page.blocked_visit(), |
| 819 accept_languages)); | 832 accept_languages)); |
| 820 } | 833 } |
| 821 | 834 |
| 822 // The items which are to be written into results_info_value_ are also | 835 // The items which are to be written into results_info_value_ are also |
| 823 // described in chrome/browser/resources/history/history.js in @typedef for | 836 // described in chrome/browser/resources/history/history.js in @typedef for |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 | 920 |
| 908 // Get the ID of the client that this visit came from. | 921 // Get the ID of the client that this visit came from. |
| 909 std::string client_id; | 922 std::string client_id; |
| 910 id->GetString("client_id", &client_id); | 923 id->GetString("client_id", &client_id); |
| 911 | 924 |
| 912 web_history_query_results_.push_back( | 925 web_history_query_results_.push_back( |
| 913 HistoryEntry( | 926 HistoryEntry( |
| 914 HistoryEntry::REMOTE_ENTRY, | 927 HistoryEntry::REMOTE_ENTRY, |
| 915 GURL(url), | 928 GURL(url), |
| 916 title, | 929 title, |
| 930 history::HistoryContext::CONTEXT_NONE, |
| 917 time, | 931 time, |
| 918 client_id, | 932 client_id, |
| 919 !search_text.empty(), | 933 !search_text.empty(), |
| 920 base::string16(), | 934 base::string16(), |
| 921 /* blocked_visit */ false, | 935 /* blocked_visit */ false, |
| 922 accept_languages)); | 936 accept_languages)); |
| 923 } | 937 } |
| 924 } | 938 } |
| 925 } else if (results_value) { | 939 } else if (results_value) { |
| 926 NOTREACHED() << "Failed to parse JSON response."; | 940 NOTREACHED() << "Failed to parse JSON response."; |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1041 Profile* profile = Profile::FromWebUI(web_ui); | 1055 Profile* profile = Profile::FromWebUI(web_ui); |
| 1042 content::WebUIDataSource::Add(profile, CreateHistoryUIHTMLSource(profile)); | 1056 content::WebUIDataSource::Add(profile, CreateHistoryUIHTMLSource(profile)); |
| 1043 } | 1057 } |
| 1044 | 1058 |
| 1045 // static | 1059 // static |
| 1046 base::RefCountedMemory* HistoryUI::GetFaviconResourceBytes( | 1060 base::RefCountedMemory* HistoryUI::GetFaviconResourceBytes( |
| 1047 ui::ScaleFactor scale_factor) { | 1061 ui::ScaleFactor scale_factor) { |
| 1048 return ResourceBundle::GetSharedInstance(). | 1062 return ResourceBundle::GetSharedInstance(). |
| 1049 LoadDataResourceBytesForScale(IDR_HISTORY_FAVICON, scale_factor); | 1063 LoadDataResourceBytesForScale(IDR_HISTORY_FAVICON, scale_factor); |
| 1050 } | 1064 } |
| OLD | NEW |