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 |