| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/bug_report_ui.h" | 5 #include "chrome/browser/ui/webui/bug_report_ui.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 #include "chrome/browser/chromeos/login/user_manager.h" | 46 #include "chrome/browser/chromeos/login/user_manager.h" |
| 47 #include "chrome/browser/chromeos/system/syslogs_provider.h" | 47 #include "chrome/browser/chromeos/system/syslogs_provider.h" |
| 48 #endif | 48 #endif |
| 49 | 49 |
| 50 namespace { | 50 namespace { |
| 51 | 51 |
| 52 const char kScreenshotBaseUrl[] = "chrome://screenshots/"; | 52 const char kScreenshotBaseUrl[] = "chrome://screenshots/"; |
| 53 const char kCurrentScreenshotUrl[] = "chrome://screenshots/current"; | 53 const char kCurrentScreenshotUrl[] = "chrome://screenshots/current"; |
| 54 #if defined(OS_CHROMEOS) | 54 #if defined(OS_CHROMEOS) |
| 55 const char kSavedScreenshotsUrl[] = "chrome://screenshots/saved/"; | 55 const char kSavedScreenshotsUrl[] = "chrome://screenshots/saved/"; |
| 56 | 56 const char kScreenshotPattern[] = "screenshot-*.png"; |
| 57 const char kScreenshotPattern[] = "*.png"; | |
| 58 const char kScreenshotsRelativePath[] = "/Screenshots"; | |
| 59 | 57 |
| 60 const size_t kMaxSavedScreenshots = 2; | 58 const size_t kMaxSavedScreenshots = 2; |
| 61 #endif | 59 #endif |
| 62 | 60 |
| 63 #if defined(OS_CHROMEOS) | 61 #if defined(OS_CHROMEOS) |
| 64 | 62 |
| 65 void GetSavedScreenshots(std::vector<std::string>* saved_screenshots, | 63 void GetSavedScreenshots(std::vector<std::string>* saved_screenshots, |
| 66 base::WaitableEvent* done) { | 64 base::WaitableEvent* done) { |
| 67 saved_screenshots->clear(); | 65 saved_screenshots->clear(); |
| 68 | 66 |
| 69 FilePath fileshelf_path; | 67 FilePath fileshelf_path; |
| 70 if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, | 68 if (!PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, |
| 71 &fileshelf_path)) { | 69 &fileshelf_path)) { |
| 72 done->Signal(); | 70 done->Signal(); |
| 73 return; | 71 return; |
| 74 } | 72 } |
| 75 | 73 |
| 76 // TODO(rkc): Change this to use FilePath.Append() once the cros | 74 file_util::FileEnumerator screenshots(fileshelf_path, false, |
| 77 // issue with it is fixed | |
| 78 FilePath screenshots_path(fileshelf_path.value() + | |
| 79 std::string(kScreenshotsRelativePath)); | |
| 80 file_util::FileEnumerator screenshots(screenshots_path, false, | |
| 81 file_util::FileEnumerator::FILES, | 75 file_util::FileEnumerator::FILES, |
| 82 std::string(kScreenshotPattern)); | 76 std::string(kScreenshotPattern)); |
| 83 FilePath screenshot = screenshots.Next(); | 77 FilePath screenshot = screenshots.Next(); |
| 84 while (!screenshot.empty()) { | 78 while (!screenshot.empty()) { |
| 85 saved_screenshots->push_back(std::string(kSavedScreenshotsUrl) + | 79 saved_screenshots->push_back(std::string(kSavedScreenshotsUrl) + |
| 86 screenshot.BaseName().value()); | 80 screenshot.BaseName().value()); |
| 87 if (saved_screenshots->size() >= kMaxSavedScreenshots) | 81 if (saved_screenshots->size() >= kMaxSavedScreenshots) |
| 88 break; | 82 break; |
| 89 | 83 |
| 90 screenshot = screenshots.Next(); | 84 screenshot = screenshots.Next(); |
| (...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 LOG(ERROR) << "Incorrect data passed to sendReport."; | 500 LOG(ERROR) << "Incorrect data passed to sendReport."; |
| 507 return; | 501 return; |
| 508 } | 502 } |
| 509 | 503 |
| 510 // #3 - Screenshot to send. | 504 // #3 - Screenshot to send. |
| 511 std::string screenshot_path; | 505 std::string screenshot_path; |
| 512 (*i)->GetAsString(&screenshot_path); | 506 (*i)->GetAsString(&screenshot_path); |
| 513 screenshot_path.erase(0, strlen(kScreenshotBaseUrl)); | 507 screenshot_path.erase(0, strlen(kScreenshotBaseUrl)); |
| 514 | 508 |
| 515 // Get the image to send in the report. | 509 // Get the image to send in the report. |
| 516 std::vector<unsigned char> image; | 510 ScreenshotDataPtr image_ptr; |
| 517 if (!screenshot_path.empty()) | 511 if (!screenshot_path.empty()) |
| 518 image = screenshot_source_->GetScreenshot(screenshot_path); | 512 image_ptr = screenshot_source_->GetCachedScreenshot(screenshot_path); |
| 519 | 513 |
| 520 #if defined(OS_CHROMEOS) | 514 #if defined(OS_CHROMEOS) |
| 521 if (++i == list_value->end()) { | 515 if (++i == list_value->end()) { |
| 522 LOG(ERROR) << "Incorrect data passed to sendReport."; | 516 LOG(ERROR) << "Incorrect data passed to sendReport."; |
| 523 return; | 517 return; |
| 524 } | 518 } |
| 525 | 519 |
| 526 // #4 - User e-mail | 520 // #4 - User e-mail |
| 527 std::string user_email; | 521 std::string user_email; |
| 528 (*i)->GetAsString(&user_email); | 522 (*i)->GetAsString(&user_email); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 540 if (!send_sys_info) | 534 if (!send_sys_info) |
| 541 CancelFeedbackCollection(); | 535 CancelFeedbackCollection(); |
| 542 #endif | 536 #endif |
| 543 | 537 |
| 544 // Update the data in bug_report_data_ so it can be sent | 538 // Update the data in bug_report_data_ so it can be sent |
| 545 bug_report_data_->UpdateData(Profile::FromWebUI(web_ui_) | 539 bug_report_data_->UpdateData(Profile::FromWebUI(web_ui_) |
| 546 , target_tab_url_ | 540 , target_tab_url_ |
| 547 , problem_type | 541 , problem_type |
| 548 , page_url | 542 , page_url |
| 549 , description | 543 , description |
| 550 , image | 544 , image_ptr |
| 551 #if defined(OS_CHROMEOS) | 545 #if defined(OS_CHROMEOS) |
| 552 , user_email | 546 , user_email |
| 553 , send_sys_info | 547 , send_sys_info |
| 554 , false // sent_report | 548 , false // sent_report |
| 555 #endif | 549 #endif |
| 556 ); | 550 ); |
| 557 | 551 |
| 558 #if defined(OS_CHROMEOS) | 552 #if defined(OS_CHROMEOS) |
| 559 // If we don't require sys_info, or we have it, or we never requested it | 553 // If we don't require sys_info, or we have it, or we never requested it |
| 560 // (because libcros failed to load), then send the report now. | 554 // (because libcros failed to load), then send the report now. |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 AddMessageHandler((handler)->Attach(this)); | 612 AddMessageHandler((handler)->Attach(this)); |
| 619 | 613 |
| 620 // The handler's init will determine whether we show the error html page. | 614 // The handler's init will determine whether we show the error html page. |
| 621 ChromeWebUIDataSource* html_source = | 615 ChromeWebUIDataSource* html_source = |
| 622 CreateBugReportUIHTMLSource(handler->Init()); | 616 CreateBugReportUIHTMLSource(handler->Init()); |
| 623 | 617 |
| 624 // Set up the chrome://bugreport/ source. | 618 // Set up the chrome://bugreport/ source. |
| 625 Profile* profile = Profile::FromBrowserContext(tab->browser_context()); | 619 Profile* profile = Profile::FromBrowserContext(tab->browser_context()); |
| 626 profile->GetChromeURLDataManager()->AddDataSource(html_source); | 620 profile->GetChromeURLDataManager()->AddDataSource(html_source); |
| 627 } | 621 } |
| OLD | NEW |