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/sessions/base_session_service.h" | 5 #include "chrome/browser/sessions/base_session_service.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/pickle.h" | 10 #include "base/pickle.h" |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 return new SessionCommand(command_id, pickle); | 266 return new SessionCommand(command_id, pickle); |
267 } | 267 } |
268 | 268 |
269 bool BaseSessionService::RestoreUpdateTabNavigationCommand( | 269 bool BaseSessionService::RestoreUpdateTabNavigationCommand( |
270 const SessionCommand& command, | 270 const SessionCommand& command, |
271 TabNavigation* navigation, | 271 TabNavigation* navigation, |
272 SessionID::id_type* tab_id) { | 272 SessionID::id_type* tab_id) { |
273 scoped_ptr<Pickle> pickle(command.PayloadAsPickle()); | 273 scoped_ptr<Pickle> pickle(command.PayloadAsPickle()); |
274 if (!pickle.get()) | 274 if (!pickle.get()) |
275 return false; | 275 return false; |
276 void* iterator = NULL; | 276 PickleIterator iterator(*pickle); |
277 std::string url_spec; | 277 std::string url_spec; |
278 if (!pickle->ReadInt(&iterator, tab_id) || | 278 if (!pickle->ReadInt(&iterator, tab_id) || |
279 !pickle->ReadInt(&iterator, &(navigation->index_)) || | 279 !pickle->ReadInt(&iterator, &(navigation->index_)) || |
280 !pickle->ReadString(&iterator, &url_spec) || | 280 !pickle->ReadString(&iterator, &url_spec) || |
281 !pickle->ReadString16(&iterator, &(navigation->title_)) || | 281 !pickle->ReadString16(&iterator, &(navigation->title_)) || |
282 !pickle->ReadString(&iterator, &(navigation->state_)) || | 282 !pickle->ReadString(&iterator, &(navigation->state_)) || |
283 !pickle->ReadInt(&iterator, | 283 !pickle->ReadInt(&iterator, |
284 reinterpret_cast<int*>(&(navigation->transition_)))) | 284 reinterpret_cast<int*>(&(navigation->transition_)))) |
285 return false; | 285 return false; |
286 // type_mask did not always exist in the written stream. As such, we | 286 // type_mask did not always exist in the written stream. As such, we |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 } | 321 } |
322 | 322 |
323 bool BaseSessionService::RestoreSetTabExtensionAppIDCommand( | 323 bool BaseSessionService::RestoreSetTabExtensionAppIDCommand( |
324 const SessionCommand& command, | 324 const SessionCommand& command, |
325 SessionID::id_type* tab_id, | 325 SessionID::id_type* tab_id, |
326 std::string* extension_app_id) { | 326 std::string* extension_app_id) { |
327 scoped_ptr<Pickle> pickle(command.PayloadAsPickle()); | 327 scoped_ptr<Pickle> pickle(command.PayloadAsPickle()); |
328 if (!pickle.get()) | 328 if (!pickle.get()) |
329 return false; | 329 return false; |
330 | 330 |
331 void* iterator = NULL; | 331 PickleIterator iterator(*pickle); |
332 return pickle->ReadInt(&iterator, tab_id) && | 332 return pickle->ReadInt(&iterator, tab_id) && |
333 pickle->ReadString(&iterator, extension_app_id); | 333 pickle->ReadString(&iterator, extension_app_id); |
334 } | 334 } |
335 | 335 |
336 bool BaseSessionService::RestoreSetWindowAppNameCommand( | 336 bool BaseSessionService::RestoreSetWindowAppNameCommand( |
337 const SessionCommand& command, | 337 const SessionCommand& command, |
338 SessionID::id_type* window_id, | 338 SessionID::id_type* window_id, |
339 std::string* app_name) { | 339 std::string* app_name) { |
340 scoped_ptr<Pickle> pickle(command.PayloadAsPickle()); | 340 scoped_ptr<Pickle> pickle(command.PayloadAsPickle()); |
341 if (!pickle.get()) | 341 if (!pickle.get()) |
342 return false; | 342 return false; |
343 | 343 |
344 void* iterator = NULL; | 344 PickleIterator iterator(*pickle); |
345 return pickle->ReadInt(&iterator, window_id) && | 345 return pickle->ReadInt(&iterator, window_id) && |
346 pickle->ReadString(&iterator, app_name); | 346 pickle->ReadString(&iterator, app_name); |
347 } | 347 } |
348 | 348 |
349 bool BaseSessionService::ShouldTrackEntry(const GURL& url) { | 349 bool BaseSessionService::ShouldTrackEntry(const GURL& url) { |
350 // NOTE: Do not track print preview tab because re-opening that page will | 350 // NOTE: Do not track print preview tab because re-opening that page will |
351 // just display a non-functional print preview page. | 351 // just display a non-functional print preview page. |
352 return url.is_valid() && url != GURL(chrome::kChromeUIPrintURL); | 352 return url.is_valid() && url != GURL(chrome::kChromeUIPrintURL); |
353 } | 353 } |
354 | 354 |
(...skipping 29 matching lines...) Expand all Loading... |
384 | 384 |
385 void BaseSessionService::ResetContentStateReadingMetrics() { | 385 void BaseSessionService::ResetContentStateReadingMetrics() { |
386 time_spent_reading_compressed_content_states = base::TimeDelta(); | 386 time_spent_reading_compressed_content_states = base::TimeDelta(); |
387 } | 387 } |
388 | 388 |
389 void BaseSessionService::WriteContentStateReadingMetrics() { | 389 void BaseSessionService::WriteContentStateReadingMetrics() { |
390 UMA_HISTOGRAM_TIMES("SessionService.ReadingCompressedContentStates", | 390 UMA_HISTOGRAM_TIMES("SessionService.ReadingCompressedContentStates", |
391 time_spent_reading_compressed_content_states); | 391 time_spent_reading_compressed_content_states); |
392 ResetContentStateReadingMetrics(); | 392 ResetContentStateReadingMetrics(); |
393 } | 393 } |
OLD | NEW |