| 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/metrics/metrics_log.h" | 5 #include "chrome/browser/metrics/metrics_log.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 #include "base/time/time.h" | 21 #include "base/time/time.h" |
| 22 #include "base/tracked_objects.h" | 22 #include "base/tracked_objects.h" |
| 23 #include "chrome/browser/google/google_util.h" | 23 #include "chrome/browser/google/google_util.h" |
| 24 #include "chrome/browser/prefs/browser_prefs.h" | 24 #include "chrome/browser/prefs/browser_prefs.h" |
| 25 #include "chrome/common/chrome_switches.h" | 25 #include "chrome/common/chrome_switches.h" |
| 26 #include "chrome/common/metrics/proto/profiler_event.pb.h" | 26 #include "chrome/common/metrics/proto/profiler_event.pb.h" |
| 27 #include "chrome/common/metrics/proto/system_profile.pb.h" | 27 #include "chrome/common/metrics/proto/system_profile.pb.h" |
| 28 #include "chrome/common/metrics/variations/variations_util.h" | 28 #include "chrome/common/metrics/variations/variations_util.h" |
| 29 #include "chrome/common/pref_names.h" | 29 #include "chrome/common/pref_names.h" |
| 30 #include "chrome/installer/util/google_update_settings.h" | 30 #include "chrome/installer/util/google_update_settings.h" |
| 31 #include "components/metrics/metrics_hashes.h" |
| 31 #include "components/variations/metrics_util.h" | 32 #include "components/variations/metrics_util.h" |
| 32 #include "content/public/browser/browser_thread.h" | 33 #include "content/public/browser/browser_thread.h" |
| 33 #include "content/public/common/process_type.h" | 34 #include "content/public/common/process_type.h" |
| 34 #include "content/public/common/webplugininfo.h" | 35 #include "content/public/common/webplugininfo.h" |
| 35 #include "content/public/test/test_browser_thread_bundle.h" | 36 #include "content/public/test/test_browser_thread_bundle.h" |
| 36 #include "content/public/test/test_utils.h" | 37 #include "content/public/test/test_utils.h" |
| 37 #include "testing/gtest/include/gtest/gtest.h" | 38 #include "testing/gtest/include/gtest/gtest.h" |
| 38 #include "ui/gfx/size.h" | 39 #include "ui/gfx/size.h" |
| 39 #include "url/gurl.h" | 40 #include "url/gurl.h" |
| 40 | 41 |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 EXPECT_FALSE(stability.plugin_stability(0).plugin().is_pepper()); | 461 EXPECT_FALSE(stability.plugin_stability(0).plugin().is_pepper()); |
| 461 EXPECT_EQ(1, stability.plugin_stability(0).launch_count()); | 462 EXPECT_EQ(1, stability.plugin_stability(0).launch_count()); |
| 462 EXPECT_EQ(2, stability.plugin_stability(0).crash_count()); | 463 EXPECT_EQ(2, stability.plugin_stability(0).crash_count()); |
| 463 EXPECT_EQ(3, stability.plugin_stability(0).instance_count()); | 464 EXPECT_EQ(3, stability.plugin_stability(0).instance_count()); |
| 464 EXPECT_EQ(4, stability.plugin_stability(0).loading_error_count()); | 465 EXPECT_EQ(4, stability.plugin_stability(0).loading_error_count()); |
| 465 } | 466 } |
| 466 #endif // defined(ENABLE_PLUGINS) | 467 #endif // defined(ENABLE_PLUGINS) |
| 467 | 468 |
| 468 // Test that we properly write profiler data to the log. | 469 // Test that we properly write profiler data to the log. |
| 469 TEST_F(MetricsLogTest, RecordProfilerData) { | 470 TEST_F(MetricsLogTest, RecordProfilerData) { |
| 471 // WARNING: If you broke the below check, you've modified how |
| 472 // metrics::HashMetricName works. Please also modify all server-side code that |
| 473 // relies on the existing way of hashing. |
| 474 EXPECT_EQ(GG_UINT64_C(1518842999910132863), |
| 475 metrics::HashMetricName("birth_thread*")); |
| 476 |
| 470 TestMetricsLog log(kClientId, kSessionId); | 477 TestMetricsLog log(kClientId, kSessionId); |
| 471 EXPECT_EQ(0, log.uma_proto().profiler_event_size()); | 478 EXPECT_EQ(0, log.uma_proto().profiler_event_size()); |
| 472 | 479 |
| 473 { | 480 { |
| 474 ProcessDataSnapshot process_data; | 481 ProcessDataSnapshot process_data; |
| 475 process_data.process_id = 177; | 482 process_data.process_id = 177; |
| 476 process_data.tasks.push_back(TaskSnapshot()); | 483 process_data.tasks.push_back(TaskSnapshot()); |
| 477 process_data.tasks.back().birth.location.file_name = "file"; | 484 process_data.tasks.back().birth.location.file_name = "a/b/file.h"; |
| 478 process_data.tasks.back().birth.location.function_name = "function"; | 485 process_data.tasks.back().birth.location.function_name = "function"; |
| 479 process_data.tasks.back().birth.location.line_number = 1337; | 486 process_data.tasks.back().birth.location.line_number = 1337; |
| 480 process_data.tasks.back().birth.thread_name = "birth_thread"; | 487 process_data.tasks.back().birth.thread_name = "birth_thread"; |
| 481 process_data.tasks.back().death_data.count = 37; | 488 process_data.tasks.back().death_data.count = 37; |
| 482 process_data.tasks.back().death_data.run_duration_sum = 31; | 489 process_data.tasks.back().death_data.run_duration_sum = 31; |
| 483 process_data.tasks.back().death_data.run_duration_max = 17; | 490 process_data.tasks.back().death_data.run_duration_max = 17; |
| 484 process_data.tasks.back().death_data.run_duration_sample = 13; | 491 process_data.tasks.back().death_data.run_duration_sample = 13; |
| 485 process_data.tasks.back().death_data.queue_duration_sum = 8; | 492 process_data.tasks.back().death_data.queue_duration_sum = 8; |
| 486 process_data.tasks.back().death_data.queue_duration_max = 5; | 493 process_data.tasks.back().death_data.queue_duration_max = 5; |
| 487 process_data.tasks.back().death_data.queue_duration_sample = 3; | 494 process_data.tasks.back().death_data.queue_duration_sample = 3; |
| 488 process_data.tasks.back().death_thread_name = "Still_Alive"; | 495 process_data.tasks.back().death_thread_name = "Still_Alive"; |
| 489 process_data.tasks.push_back(TaskSnapshot()); | 496 process_data.tasks.push_back(TaskSnapshot()); |
| 490 process_data.tasks.back().birth.location.file_name = "file2"; | 497 process_data.tasks.back().birth.location.file_name = "c\\d\\file2"; |
| 491 process_data.tasks.back().birth.location.function_name = "function2"; | 498 process_data.tasks.back().birth.location.function_name = "function2"; |
| 492 process_data.tasks.back().birth.location.line_number = 1773; | 499 process_data.tasks.back().birth.location.line_number = 1773; |
| 493 process_data.tasks.back().birth.thread_name = "birth_thread2"; | 500 process_data.tasks.back().birth.thread_name = "birth_thread2"; |
| 494 process_data.tasks.back().death_data.count = 19; | 501 process_data.tasks.back().death_data.count = 19; |
| 495 process_data.tasks.back().death_data.run_duration_sum = 23; | 502 process_data.tasks.back().death_data.run_duration_sum = 23; |
| 496 process_data.tasks.back().death_data.run_duration_max = 11; | 503 process_data.tasks.back().death_data.run_duration_max = 11; |
| 497 process_data.tasks.back().death_data.run_duration_sample = 7; | 504 process_data.tasks.back().death_data.run_duration_sample = 7; |
| 498 process_data.tasks.back().death_data.queue_duration_sum = 0; | 505 process_data.tasks.back().death_data.queue_duration_sum = 0; |
| 499 process_data.tasks.back().death_data.queue_duration_max = 0; | 506 process_data.tasks.back().death_data.queue_duration_max = 0; |
| 500 process_data.tasks.back().death_data.queue_duration_sample = 0; | 507 process_data.tasks.back().death_data.queue_duration_sample = 0; |
| 501 process_data.tasks.back().death_thread_name = "death_thread"; | 508 process_data.tasks.back().death_thread_name = "death_thread"; |
| 502 | 509 |
| 503 log.RecordProfilerData(process_data, content::PROCESS_TYPE_BROWSER); | 510 log.RecordProfilerData(process_data, content::PROCESS_TYPE_BROWSER); |
| 504 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); | 511 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); |
| 505 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, | 512 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, |
| 506 log.uma_proto().profiler_event(0).profile_type()); | 513 log.uma_proto().profiler_event(0).profile_type()); |
| 507 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, | 514 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, |
| 508 log.uma_proto().profiler_event(0).time_source()); | 515 log.uma_proto().profiler_event(0).time_source()); |
| 509 | 516 |
| 510 ASSERT_EQ(2, log.uma_proto().profiler_event(0).tracked_object_size()); | 517 ASSERT_EQ(2, log.uma_proto().profiler_event(0).tracked_object_size()); |
| 511 | 518 |
| 512 const ProfilerEventProto::TrackedObject* tracked_object = | 519 const ProfilerEventProto::TrackedObject* tracked_object = |
| 513 &log.uma_proto().profiler_event(0).tracked_object(0); | 520 &log.uma_proto().profiler_event(0).tracked_object(0); |
| 514 EXPECT_EQ(GG_UINT64_C(10123486280357988687), | 521 EXPECT_EQ(metrics::HashMetricName("file.h"), |
| 515 tracked_object->source_file_name_hash()); | 522 tracked_object->source_file_name_hash()); |
| 516 EXPECT_EQ(GG_UINT64_C(13962325592283560029), | 523 EXPECT_EQ(metrics::HashMetricName("function"), |
| 517 tracked_object->source_function_name_hash()); | 524 tracked_object->source_function_name_hash()); |
| 518 EXPECT_EQ(1337, tracked_object->source_line_number()); | 525 EXPECT_EQ(1337, tracked_object->source_line_number()); |
| 519 EXPECT_EQ(GG_UINT64_C(3400908935414830400), | 526 EXPECT_EQ(metrics::HashMetricName("birth_thread"), |
| 520 tracked_object->birth_thread_name_hash()); | 527 tracked_object->birth_thread_name_hash()); |
| 521 EXPECT_EQ(37, tracked_object->exec_count()); | 528 EXPECT_EQ(37, tracked_object->exec_count()); |
| 522 EXPECT_EQ(31, tracked_object->exec_time_total()); | 529 EXPECT_EQ(31, tracked_object->exec_time_total()); |
| 523 EXPECT_EQ(13, tracked_object->exec_time_sampled()); | 530 EXPECT_EQ(13, tracked_object->exec_time_sampled()); |
| 524 EXPECT_EQ(8, tracked_object->queue_time_total()); | 531 EXPECT_EQ(8, tracked_object->queue_time_total()); |
| 525 EXPECT_EQ(3, tracked_object->queue_time_sampled()); | 532 EXPECT_EQ(3, tracked_object->queue_time_sampled()); |
| 526 EXPECT_EQ(GG_UINT64_C(10151977472163283085), | 533 EXPECT_EQ(metrics::HashMetricName("Still_Alive"), |
| 527 tracked_object->exec_thread_name_hash()); | 534 tracked_object->exec_thread_name_hash()); |
| 528 EXPECT_EQ(177U, tracked_object->process_id()); | 535 EXPECT_EQ(177U, tracked_object->process_id()); |
| 529 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, | 536 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, |
| 530 tracked_object->process_type()); | 537 tracked_object->process_type()); |
| 531 | 538 |
| 532 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(1); | 539 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(1); |
| 533 EXPECT_EQ(GG_UINT64_C(2025659946535236365), | 540 EXPECT_EQ(metrics::HashMetricName("file2"), |
| 534 tracked_object->source_file_name_hash()); | 541 tracked_object->source_file_name_hash()); |
| 535 EXPECT_EQ(GG_UINT64_C(55232426147951219), | 542 EXPECT_EQ(metrics::HashMetricName("function2"), |
| 536 tracked_object->source_function_name_hash()); | 543 tracked_object->source_function_name_hash()); |
| 537 EXPECT_EQ(1773, tracked_object->source_line_number()); | 544 EXPECT_EQ(1773, tracked_object->source_line_number()); |
| 538 EXPECT_EQ(GG_UINT64_C(1518842999910132863), | 545 EXPECT_EQ(metrics::HashMetricName("birth_thread*"), |
| 539 tracked_object->birth_thread_name_hash()); | 546 tracked_object->birth_thread_name_hash()); |
| 540 EXPECT_EQ(19, tracked_object->exec_count()); | 547 EXPECT_EQ(19, tracked_object->exec_count()); |
| 541 EXPECT_EQ(23, tracked_object->exec_time_total()); | 548 EXPECT_EQ(23, tracked_object->exec_time_total()); |
| 542 EXPECT_EQ(7, tracked_object->exec_time_sampled()); | 549 EXPECT_EQ(7, tracked_object->exec_time_sampled()); |
| 543 EXPECT_EQ(0, tracked_object->queue_time_total()); | 550 EXPECT_EQ(0, tracked_object->queue_time_total()); |
| 544 EXPECT_EQ(0, tracked_object->queue_time_sampled()); | 551 EXPECT_EQ(0, tracked_object->queue_time_sampled()); |
| 545 EXPECT_EQ(GG_UINT64_C(14275151213201158253), | 552 EXPECT_EQ(metrics::HashMetricName("death_thread"), |
| 546 tracked_object->exec_thread_name_hash()); | 553 tracked_object->exec_thread_name_hash()); |
| 547 EXPECT_EQ(177U, tracked_object->process_id()); | 554 EXPECT_EQ(177U, tracked_object->process_id()); |
| 548 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, | 555 EXPECT_EQ(ProfilerEventProto::TrackedObject::BROWSER, |
| 549 tracked_object->process_type()); | 556 tracked_object->process_type()); |
| 550 } | 557 } |
| 551 | 558 |
| 552 { | 559 { |
| 553 ProcessDataSnapshot process_data; | 560 ProcessDataSnapshot process_data; |
| 554 process_data.process_id = 1177; | 561 process_data.process_id = 1177; |
| 555 process_data.tasks.push_back(TaskSnapshot()); | 562 process_data.tasks.push_back(TaskSnapshot()); |
| 556 process_data.tasks.back().birth.location.file_name = "file3"; | 563 process_data.tasks.back().birth.location.file_name = "file3"; |
| 557 process_data.tasks.back().birth.location.function_name = "function3"; | 564 process_data.tasks.back().birth.location.function_name = "function3"; |
| 558 process_data.tasks.back().birth.location.line_number = 7331; | 565 process_data.tasks.back().birth.location.line_number = 7331; |
| 559 process_data.tasks.back().birth.thread_name = "birth_thread3"; | 566 process_data.tasks.back().birth.thread_name = "birth_thread3"; |
| 560 process_data.tasks.back().death_data.count = 137; | 567 process_data.tasks.back().death_data.count = 137; |
| 561 process_data.tasks.back().death_data.run_duration_sum = 131; | 568 process_data.tasks.back().death_data.run_duration_sum = 131; |
| 562 process_data.tasks.back().death_data.run_duration_max = 117; | 569 process_data.tasks.back().death_data.run_duration_max = 117; |
| 563 process_data.tasks.back().death_data.run_duration_sample = 113; | 570 process_data.tasks.back().death_data.run_duration_sample = 113; |
| 564 process_data.tasks.back().death_data.queue_duration_sum = 108; | 571 process_data.tasks.back().death_data.queue_duration_sum = 108; |
| 565 process_data.tasks.back().death_data.queue_duration_max = 105; | 572 process_data.tasks.back().death_data.queue_duration_max = 105; |
| 566 process_data.tasks.back().death_data.queue_duration_sample = 103; | 573 process_data.tasks.back().death_data.queue_duration_sample = 103; |
| 567 process_data.tasks.back().death_thread_name = "death_thread3"; | 574 process_data.tasks.back().death_thread_name = "death_thread3"; |
| 575 process_data.tasks.push_back(TaskSnapshot()); |
| 576 process_data.tasks.back().birth.location.file_name = ""; |
| 577 process_data.tasks.back().birth.location.function_name = ""; |
| 578 process_data.tasks.back().birth.location.line_number = 7332; |
| 579 process_data.tasks.back().birth.thread_name = ""; |
| 580 process_data.tasks.back().death_data.count = 138; |
| 581 process_data.tasks.back().death_data.run_duration_sum = 132; |
| 582 process_data.tasks.back().death_data.run_duration_max = 118; |
| 583 process_data.tasks.back().death_data.run_duration_sample = 114; |
| 584 process_data.tasks.back().death_data.queue_duration_sum = 109; |
| 585 process_data.tasks.back().death_data.queue_duration_max = 106; |
| 586 process_data.tasks.back().death_data.queue_duration_sample = 104; |
| 587 process_data.tasks.back().death_thread_name = ""; |
| 568 | 588 |
| 569 log.RecordProfilerData(process_data, content::PROCESS_TYPE_RENDERER); | 589 log.RecordProfilerData(process_data, content::PROCESS_TYPE_RENDERER); |
| 570 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); | 590 ASSERT_EQ(1, log.uma_proto().profiler_event_size()); |
| 571 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, | 591 EXPECT_EQ(ProfilerEventProto::STARTUP_PROFILE, |
| 572 log.uma_proto().profiler_event(0).profile_type()); | 592 log.uma_proto().profiler_event(0).profile_type()); |
| 573 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, | 593 EXPECT_EQ(ProfilerEventProto::WALL_CLOCK_TIME, |
| 574 log.uma_proto().profiler_event(0).time_source()); | 594 log.uma_proto().profiler_event(0).time_source()); |
| 575 ASSERT_EQ(3, log.uma_proto().profiler_event(0).tracked_object_size()); | 595 ASSERT_EQ(4, log.uma_proto().profiler_event(0).tracked_object_size()); |
| 576 | 596 |
| 577 const ProfilerEventProto::TrackedObject* tracked_object = | 597 const ProfilerEventProto::TrackedObject* tracked_object = |
| 578 &log.uma_proto().profiler_event(0).tracked_object(2); | 598 &log.uma_proto().profiler_event(0).tracked_object(2); |
| 579 EXPECT_EQ(GG_UINT64_C(2686523203278102732), | 599 EXPECT_EQ(metrics::HashMetricName("file3"), |
| 580 tracked_object->source_file_name_hash()); | 600 tracked_object->source_file_name_hash()); |
| 581 EXPECT_EQ(GG_UINT64_C(5081672290546182009), | 601 EXPECT_EQ(metrics::HashMetricName("function3"), |
| 582 tracked_object->source_function_name_hash()); | 602 tracked_object->source_function_name_hash()); |
| 583 EXPECT_EQ(7331, tracked_object->source_line_number()); | 603 EXPECT_EQ(7331, tracked_object->source_line_number()); |
| 584 EXPECT_EQ(GG_UINT64_C(1518842999910132863), | 604 EXPECT_EQ(metrics::HashMetricName("birth_thread*"), |
| 585 tracked_object->birth_thread_name_hash()); | 605 tracked_object->birth_thread_name_hash()); |
| 586 EXPECT_EQ(137, tracked_object->exec_count()); | 606 EXPECT_EQ(137, tracked_object->exec_count()); |
| 587 EXPECT_EQ(131, tracked_object->exec_time_total()); | 607 EXPECT_EQ(131, tracked_object->exec_time_total()); |
| 588 EXPECT_EQ(113, tracked_object->exec_time_sampled()); | 608 EXPECT_EQ(113, tracked_object->exec_time_sampled()); |
| 589 EXPECT_EQ(108, tracked_object->queue_time_total()); | 609 EXPECT_EQ(108, tracked_object->queue_time_total()); |
| 590 EXPECT_EQ(103, tracked_object->queue_time_sampled()); | 610 EXPECT_EQ(103, tracked_object->queue_time_sampled()); |
| 591 EXPECT_EQ(GG_UINT64_C(2203893603452504755), | 611 EXPECT_EQ(metrics::HashMetricName("death_thread*"), |
| 592 tracked_object->exec_thread_name_hash()); | 612 tracked_object->exec_thread_name_hash()); |
| 593 EXPECT_EQ(1177U, tracked_object->process_id()); | 613 EXPECT_EQ(1177U, tracked_object->process_id()); |
| 594 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, | 614 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, |
| 595 tracked_object->process_type()); | 615 tracked_object->process_type()); |
| 616 |
| 617 tracked_object = &log.uma_proto().profiler_event(0).tracked_object(3); |
| 618 EXPECT_EQ(metrics::HashMetricName(""), |
| 619 tracked_object->source_file_name_hash()); |
| 620 EXPECT_EQ(metrics::HashMetricName(""), |
| 621 tracked_object->source_function_name_hash()); |
| 622 EXPECT_EQ(7332, tracked_object->source_line_number()); |
| 623 EXPECT_EQ(metrics::HashMetricName(""), |
| 624 tracked_object->birth_thread_name_hash()); |
| 625 EXPECT_EQ(138, tracked_object->exec_count()); |
| 626 EXPECT_EQ(132, tracked_object->exec_time_total()); |
| 627 EXPECT_EQ(114, tracked_object->exec_time_sampled()); |
| 628 EXPECT_EQ(109, tracked_object->queue_time_total()); |
| 629 EXPECT_EQ(104, tracked_object->queue_time_sampled()); |
| 630 EXPECT_EQ(metrics::HashMetricName(""), |
| 631 tracked_object->exec_thread_name_hash()); |
| 632 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, |
| 633 tracked_object->process_type()); |
| 596 } | 634 } |
| 597 } | 635 } |
| 598 | 636 |
| 599 #if defined(OS_CHROMEOS) | 637 #if defined(OS_CHROMEOS) |
| 600 TEST_F(MetricsLogTest, MultiProfileUserCount) { | 638 TEST_F(MetricsLogTest, MultiProfileUserCount) { |
| 601 std::string user1("user1@example.com"); | 639 std::string user1("user1@example.com"); |
| 602 std::string user2("user2@example.com"); | 640 std::string user2("user2@example.com"); |
| 603 std::string user3("user3@example.com"); | 641 std::string user3("user3@example.com"); |
| 604 | 642 |
| 605 // |scoped_enabler| takes over the lifetime of |user_manager|. | 643 // |scoped_enabler| takes over the lifetime of |user_manager|. |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 727 PairedDevice device2 = | 765 PairedDevice device2 = |
| 728 log.system_profile().hardware().bluetooth().paired_device(1); | 766 log.system_profile().hardware().bluetooth().paired_device(1); |
| 729 | 767 |
| 730 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, | 768 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass, |
| 731 device2.bluetooth_class()); | 769 device2.bluetooth_class()); |
| 732 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); | 770 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type()); |
| 733 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); | 771 EXPECT_EQ(0x207D74U, device2.vendor_prefix()); |
| 734 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); | 772 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source()); |
| 735 } | 773 } |
| 736 #endif // OS_CHROMEOS | 774 #endif // OS_CHROMEOS |
| OLD | NEW |