| 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/feedback_ui.h" | 5 #include "chrome/browser/ui/webui/feedback_ui.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 ReplaceFirstSubstringAfterOffset(×tamp_, | 350 ReplaceFirstSubstringAfterOffset(×tamp_, |
| 351 0, | 351 0, |
| 352 kTimestampParameter, | 352 kTimestampParameter, |
| 353 ""); | 353 ""); |
| 354 break; | 354 break; |
| 355 } | 355 } |
| 356 } | 356 } |
| 357 } | 357 } |
| 358 #endif | 358 #endif |
| 359 | 359 |
| 360 // TODO(beng): Replace GetLastActive with a more specific method of locating |
| 361 // the target contents. |
| 360 Browser* browser = BrowserList::GetLastActive(); | 362 Browser* browser = BrowserList::GetLastActive(); |
| 361 // Sanity checks. | 363 // Sanity checks. |
| 362 if (((index == 0) && (index_str != "0")) || !browser || | 364 if (((index == 0) && (index_str != "0")) || !browser || |
| 363 index >= browser->tab_count()) { | 365 index >= browser->tab_count()) { |
| 364 return false; | 366 return false; |
| 365 } | 367 } |
| 366 | 368 |
| 367 WebContents* target_tab = | 369 WebContents* target_tab = |
| 368 browser->GetTabContentsWrapperAt(index)->web_contents(); | 370 browser->GetTabContentsWrapperAt(index)->web_contents(); |
| 369 if (target_tab) { | 371 if (target_tab) { |
| 370 target_tab_url_ = target_tab->GetURL().spec(); | 372 target_tab_url_ = target_tab->GetURL().spec(); |
| 371 } | 373 } |
| 372 | 374 |
| 373 // Setup the screenshot source after we've verified input is legit. | 375 // Setup the screenshot source after we've verified input is legit. |
| 374 SetupScreenshotsSource(); | 376 SetupScreenshotsSource(); |
| 375 | 377 |
| 376 return true; | 378 return true; |
| 377 } | 379 } |
| 378 | 380 |
| 379 void FeedbackHandler::RegisterMessages() { | 381 void FeedbackHandler::RegisterMessages() { |
| 380 SetupScreenshotsSource(); | 382 SetupScreenshotsSource(); |
| 381 | 383 |
| 382 web_ui()->RegisterMessageCallback("getDialogDefaults", | 384 web_ui()->RegisterMessageCallback("getDialogDefaults", |
| 383 base::Bind(&FeedbackHandler::HandleGetDialogDefaults, | 385 base::Bind(&FeedbackHandler::HandleGetDialogDefaults, |
| 384 base::Unretained(this))); | 386 base::Unretained(this))); |
| 385 web_ui()->RegisterMessageCallback("refreshCurrentScreenshot", | 387 web_ui()->RegisterMessageCallback("refreshCurrentScreenshot", |
| 386 base::Bind(&FeedbackHandler::HandleRefreshCurrentScreenshot, | 388 base::Bind(&FeedbackHandler::HandleRefreshCurrentScreenshot, |
| 387 base::Unretained(this))); | 389 base::Unretained(this))); |
| 388 #if defined(OS_CHROMEOS) | 390 #if defined(OS_CHROMEOS) |
| 389 web_ui()->RegisterMessageCallback("refreshSavedScreenshots", | 391 web_ui()->RegisterMessageCallback("refreshSavedScreenshots", |
| 390 base::Bind(&FeedbackHandler::HandleRefreshSavedScreenshots, | 392 base::Bind(&FeedbackHandler::HandleRefreshSavedScreenshots, |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 // function, close our feedback tab anyway, we have no more use for it. | 542 // function, close our feedback tab anyway, we have no more use for it. |
| 541 CloseFeedbackTab(); | 543 CloseFeedbackTab(); |
| 542 } | 544 } |
| 543 | 545 |
| 544 void FeedbackHandler::HandleCancel(const ListValue*) { | 546 void FeedbackHandler::HandleCancel(const ListValue*) { |
| 545 CloseFeedbackTab(); | 547 CloseFeedbackTab(); |
| 546 } | 548 } |
| 547 | 549 |
| 548 void FeedbackHandler::HandleOpenSystemTab(const ListValue* args) { | 550 void FeedbackHandler::HandleOpenSystemTab(const ListValue* args) { |
| 549 #if defined(OS_CHROMEOS) | 551 #if defined(OS_CHROMEOS) |
| 550 Browser* last_active = BrowserList::GetLastActive(); | 552 web_ui()->GetWebContents()->GetDelegate()->OpenURLFromTab( |
| 551 last_active->OpenURL( | 553 web_ui()->GetWebContents(), |
| 552 content::OpenURLParams(GURL(chrome::kChromeUISystemInfoURL), | 554 content::OpenURLParams(GURL(chrome::kChromeUISystemInfoURL), |
| 553 content::Referrer(), | 555 content::Referrer(), |
| 554 NEW_FOREGROUND_TAB, | 556 NEW_FOREGROUND_TAB, |
| 555 content::PAGE_TRANSITION_LINK, | 557 content::PAGE_TRANSITION_LINK, |
| 556 false)); | 558 false)); |
| 557 last_active->window()->Activate(); | |
| 558 #endif | 559 #endif |
| 559 } | 560 } |
| 560 | 561 |
| 561 void FeedbackHandler::CancelFeedbackCollection() { | 562 void FeedbackHandler::CancelFeedbackCollection() { |
| 562 #if defined(OS_CHROMEOS) | 563 #if defined(OS_CHROMEOS) |
| 563 if (syslogs_handle_ != 0) { | 564 if (syslogs_handle_ != 0) { |
| 564 chromeos::system::SyslogsProvider* provider = | 565 chromeos::system::SyslogsProvider* provider = |
| 565 chromeos::system::SyslogsProvider::GetInstance(); | 566 chromeos::system::SyslogsProvider::GetInstance(); |
| 566 if (provider && syslogs_consumer_.HasPendingRequests()) | 567 if (provider && syslogs_consumer_.HasPendingRequests()) |
| 567 provider->CancelRequest(syslogs_handle_); | 568 provider->CancelRequest(syslogs_handle_); |
| 568 } | 569 } |
| 569 #endif | 570 #endif |
| 570 } | 571 } |
| 571 | 572 |
| 572 void FeedbackHandler::CloseFeedbackTab() { | 573 void FeedbackHandler::CloseFeedbackTab() { |
| 573 ClobberScreenshotsSource(); | 574 ClobberScreenshotsSource(); |
| 574 | 575 tab_->GetDelegate()->CloseContents(tab_); |
| 575 Browser* browser = BrowserList::GetLastActive(); | |
| 576 if (browser) { | |
| 577 browser->CloseTabContents(tab_); | |
| 578 } else { | |
| 579 LOG(FATAL) << "Failed to get last active browser."; | |
| 580 } | |
| 581 } | 576 } |
| 582 | 577 |
| 583 //////////////////////////////////////////////////////////////////////////////// | 578 //////////////////////////////////////////////////////////////////////////////// |
| 584 // | 579 // |
| 585 // FeedbackUI | 580 // FeedbackUI |
| 586 // | 581 // |
| 587 //////////////////////////////////////////////////////////////////////////////// | 582 //////////////////////////////////////////////////////////////////////////////// |
| 588 FeedbackUI::FeedbackUI(content::WebUI* web_ui) | 583 FeedbackUI::FeedbackUI(content::WebUI* web_ui) |
| 589 : WebDialogUI(web_ui) { | 584 : WebDialogUI(web_ui) { |
| 590 FeedbackHandler* handler = new FeedbackHandler(web_ui->GetWebContents()); | 585 FeedbackHandler* handler = new FeedbackHandler(web_ui->GetWebContents()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 619 size_t sort_size = std::min(max_saved, screenshot_filepaths.size()); | 614 size_t sort_size = std::min(max_saved, screenshot_filepaths.size()); |
| 620 std::partial_sort(screenshot_filepaths.begin(), | 615 std::partial_sort(screenshot_filepaths.begin(), |
| 621 screenshot_filepaths.begin() + sort_size, | 616 screenshot_filepaths.begin() + sort_size, |
| 622 screenshot_filepaths.end(), | 617 screenshot_filepaths.end(), |
| 623 ScreenshotTimestampComp); | 618 ScreenshotTimestampComp); |
| 624 for (size_t i = 0; i < sort_size; ++i) | 619 for (size_t i = 0; i < sort_size; ++i) |
| 625 saved_screenshots->push_back(std::string(kSavedScreenshotsUrl) + | 620 saved_screenshots->push_back(std::string(kSavedScreenshotsUrl) + |
| 626 screenshot_filepaths[i]); | 621 screenshot_filepaths[i]); |
| 627 } | 622 } |
| 628 #endif | 623 #endif |
| OLD | NEW |