Home | History | Annotate | Download | only in webui
      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
      3 // found in the LICENSE file.
      4 
      5 #include "base/command_line.h"
      6 #include "base/memory/ref_counted.h"
      7 #include "base/utf_string_conversions.h"
      8 #include "chrome/browser/ui/browser.h"
      9 #include "chrome/browser/ui/browser_list.h"
     10 #include "chrome/browser/ui/webui/mediaplayer_ui.h"
     11 #include "chrome/common/chrome_switches.h"
     12 #include "chrome/common/url_constants.h"
     13 #include "chrome/test/automation/dom_element_proxy.h"
     14 #include "chrome/test/in_process_browser_test.h"
     15 #include "chrome/test/ui_test_utils.h"
     16 #include "content/browser/tab_contents/tab_contents.h"
     17 
     18 namespace {
     19 
     20 class MediaPlayerBrowserTest : public InProcessBrowserTest {
     21  public:
     22   MediaPlayerBrowserTest() {}
     23 
     24   GURL GetMusicTestURL() {
     25     return GURL("http://localhost:1337/files/plugin/sample_mp3.mp3");
     26   }
     27 
     28   bool IsPlayerVisible() {
     29     for (BrowserList::const_iterator it = BrowserList::begin();
     30          it != BrowserList::end(); ++it) {
     31       if ((*it)->type() == Browser::TYPE_APP_PANEL) {
     32         const GURL& url =
     33             (*it)->GetTabContentsAt((*it)->active_index())->GetURL();
     34 
     35         if (url.SchemeIs(chrome::kChromeUIScheme) &&
     36             url.host() == chrome::kChromeUIMediaplayerHost) {
     37           return true;
     38         }
     39       }
     40     }
     41     return false;
     42   }
     43 
     44   bool IsPlaylistVisible() {
     45     for (BrowserList::const_iterator it = BrowserList::begin();
     46          it != BrowserList::end(); ++it) {
     47       if ((*it)->type() == Browser::TYPE_APP_PANEL) {
     48         const GURL& url =
     49             (*it)->GetTabContentsAt((*it)->active_index())->GetURL();
     50 
     51         if (url.SchemeIs(chrome::kChromeUIScheme) &&
     52             url.host() == chrome::kChromeUIMediaplayerHost &&
     53             url.ref() == "playlist") {
     54           return true;
     55         }
     56       }
     57     }
     58     return false;
     59   }
     60 };
     61 
     62 IN_PROC_BROWSER_TEST_F(MediaPlayerBrowserTest, Popup) {
     63   ASSERT_TRUE(test_server()->Start());
     64   // Doing this so we have a valid profile.
     65   ui_test_utils::NavigateToURL(browser(),
     66                                GURL("chrome://downloads"));
     67 
     68   MediaPlayer* player = MediaPlayer::GetInstance();
     69   // Check that its not currently visible
     70   ASSERT_FALSE(IsPlayerVisible());
     71 
     72   player->EnqueueMediaFileUrl(GetMusicTestURL(), NULL);
     73 
     74   ASSERT_TRUE(IsPlayerVisible());
     75 }
     76 
     77 IN_PROC_BROWSER_TEST_F(MediaPlayerBrowserTest, PopupPlaylist) {
     78   ASSERT_TRUE(test_server()->Start());
     79   // Doing this so we have a valid profile.
     80   ui_test_utils::NavigateToURL(browser(),
     81                                GURL("chrome://downloads"));
     82 
     83 
     84   MediaPlayer* player = MediaPlayer::GetInstance();
     85 
     86   player->EnqueueMediaFileUrl(GetMusicTestURL(), NULL);
     87 
     88   EXPECT_FALSE(IsPlaylistVisible());
     89 
     90   player->TogglePlaylistWindowVisible();
     91 
     92   EXPECT_TRUE(IsPlaylistVisible());
     93 }
     94 
     95 }  // namespace
     96