| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/sessions/session_service_commands.h" | 5 #include "components/sessions/session_service_commands.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/pickle.h" | 9 #include "base/pickle.h" |
| 10 #include "components/sessions/base_session_service_commands.h" | 10 #include "components/sessions/base_session_service_commands.h" |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 527 | 527 |
| 528 GetTab(tab_id, tabs)->user_agent_override.swap(user_agent_override); | 528 GetTab(tab_id, tabs)->user_agent_override.swap(user_agent_override); |
| 529 break; | 529 break; |
| 530 } | 530 } |
| 531 | 531 |
| 532 case kCommandSessionStorageAssociated: { | 532 case kCommandSessionStorageAssociated: { |
| 533 scoped_ptr<Pickle> command_pickle(command->PayloadAsPickle()); | 533 scoped_ptr<Pickle> command_pickle(command->PayloadAsPickle()); |
| 534 SessionID::id_type command_tab_id; | 534 SessionID::id_type command_tab_id; |
| 535 std::string session_storage_persistent_id; | 535 std::string session_storage_persistent_id; |
| 536 PickleIterator iter(*command_pickle.get()); | 536 PickleIterator iter(*command_pickle.get()); |
| 537 if (!iter.ReadInt(&command_tab_id) || | 537 if (!command_pickle->ReadInt(&iter, &command_tab_id) || |
| 538 !iter.ReadString(&session_storage_persistent_id)) | 538 !command_pickle->ReadString(&iter, &session_storage_persistent_id)) |
| 539 return true; | 539 return true; |
| 540 // Associate the session storage back. | 540 // Associate the session storage back. |
| 541 GetTab(command_tab_id, tabs)->session_storage_persistent_id = | 541 GetTab(command_tab_id, tabs)->session_storage_persistent_id = |
| 542 session_storage_persistent_id; | 542 session_storage_persistent_id; |
| 543 break; | 543 break; |
| 544 } | 544 } |
| 545 | 545 |
| 546 case kCommandSetActiveWindow: { | 546 case kCommandSetActiveWindow: { |
| 547 ActiveWindowPayload payload; | 547 ActiveWindowPayload payload; |
| 548 if (!command->GetPayload(&payload, sizeof(payload))) { | 548 if (!command->GetPayload(&payload, sizeof(payload))) { |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 for (ScopedVector<SessionCommand>::const_reverse_iterator i = | 768 for (ScopedVector<SessionCommand>::const_reverse_iterator i = |
| 769 base_session_service->pending_commands().rbegin(); | 769 base_session_service->pending_commands().rbegin(); |
| 770 i != base_session_service->pending_commands().rend(); ++i) { | 770 i != base_session_service->pending_commands().rend(); ++i) { |
| 771 SessionCommand* existing_command = *i; | 771 SessionCommand* existing_command = *i; |
| 772 if ((*command)->id() == kCommandUpdateTabNavigation && | 772 if ((*command)->id() == kCommandUpdateTabNavigation && |
| 773 existing_command->id() == kCommandUpdateTabNavigation) { | 773 existing_command->id() == kCommandUpdateTabNavigation) { |
| 774 scoped_ptr<Pickle> command_pickle((*command)->PayloadAsPickle()); | 774 scoped_ptr<Pickle> command_pickle((*command)->PayloadAsPickle()); |
| 775 PickleIterator iterator(*command_pickle); | 775 PickleIterator iterator(*command_pickle); |
| 776 SessionID::id_type command_tab_id; | 776 SessionID::id_type command_tab_id; |
| 777 int command_nav_index; | 777 int command_nav_index; |
| 778 if (!iterator.ReadInt(&command_tab_id) || | 778 if (!command_pickle->ReadInt(&iterator, &command_tab_id) || |
| 779 !iterator.ReadInt(&command_nav_index)) { | 779 !command_pickle->ReadInt(&iterator, &command_nav_index)) { |
| 780 return false; | 780 return false; |
| 781 } | 781 } |
| 782 SessionID::id_type existing_tab_id; | 782 SessionID::id_type existing_tab_id; |
| 783 int existing_nav_index; | 783 int existing_nav_index; |
| 784 { | 784 { |
| 785 // Creating a pickle like this means the Pickle references the data from | 785 // Creating a pickle like this means the Pickle references the data from |
| 786 // the command. Make sure we delete the pickle before the command, else | 786 // the command. Make sure we delete the pickle before the command, else |
| 787 // the pickle references deleted memory. | 787 // the pickle references deleted memory. |
| 788 scoped_ptr<Pickle> existing_pickle(existing_command->PayloadAsPickle()); | 788 scoped_ptr<Pickle> existing_pickle(existing_command->PayloadAsPickle()); |
| 789 iterator = PickleIterator(*existing_pickle); | 789 iterator = PickleIterator(*existing_pickle); |
| 790 if (!iterator.ReadInt(&existing_tab_id) || | 790 if (!existing_pickle->ReadInt(&iterator, &existing_tab_id) || |
| 791 !iterator.ReadInt(&existing_nav_index)) { | 791 !existing_pickle->ReadInt(&iterator, &existing_nav_index)) { |
| 792 return false; | 792 return false; |
| 793 } | 793 } |
| 794 } | 794 } |
| 795 if (existing_tab_id == command_tab_id && | 795 if (existing_tab_id == command_tab_id && |
| 796 existing_nav_index == command_nav_index) { | 796 existing_nav_index == command_nav_index) { |
| 797 // existing_command is an update for the same tab/index pair. Replace | 797 // existing_command is an update for the same tab/index pair. Replace |
| 798 // it with the new one. We need to add to the end of the list just in | 798 // it with the new one. We need to add to the end of the list just in |
| 799 // case there is a prune command after the update command. | 799 // case there is a prune command after the update command. |
| 800 base_session_service->EraseCommand(*(i.base() - 1)); | 800 base_session_service->EraseCommand(*(i.base() - 1)); |
| 801 base_session_service->AppendRebuildCommand((*command).Pass()); | 801 base_session_service->AppendRebuildCommand((*command).Pass()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 828 AddTabsToWindows(&tabs, &windows); | 828 AddTabsToWindows(&tabs, &windows); |
| 829 SortTabsBasedOnVisualOrderAndPrune(&windows, valid_windows); | 829 SortTabsBasedOnVisualOrderAndPrune(&windows, valid_windows); |
| 830 UpdateSelectedTabIndex(valid_windows); | 830 UpdateSelectedTabIndex(valid_windows); |
| 831 } | 831 } |
| 832 STLDeleteValues(&tabs); | 832 STLDeleteValues(&tabs); |
| 833 // Don't delete contents of windows, that is done by the caller as all | 833 // Don't delete contents of windows, that is done by the caller as all |
| 834 // valid windows are added to valid_windows. | 834 // valid windows are added to valid_windows. |
| 835 } | 835 } |
| 836 | 836 |
| 837 } // namespace sessions | 837 } // namespace sessions |
| OLD | NEW |