1 // Copyright 2013 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 #ifndef CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_BROWSERTEST_COMMON_H_ 6 #define CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_BROWSERTEST_COMMON_H_ 7 8 #include <string> 9 10 #include "base/files/file_path.h" 11 #include "base/process/process_handle.h" 12 13 namespace content { 14 class WebContents; 15 } 16 17 namespace test { 18 19 // Reference file locations. 20 21 // Checks if the user has the reference files directory, returns true if so. 22 // If the user's checkout don't have these dirs, they need to configure their 23 // .gclient as described in chrome/test/data/webrtc/resources/README. The reason 24 // for this is that we don't want to burden regular chrome devs with downloading 25 // these sizable reference files by default. 26 bool HasReferenceFilesInCheckout(); 27 28 // Verifies both the YUV and Y4M version of the reference file exists. 29 bool HasYuvAndY4mFile(const base::FilePath::CharType* reference_file); 30 31 // Retrieves the reference files dir, to which file names can be appended. 32 base::FilePath GetReferenceFilesDir(); 33 34 // Retrieves a tool binary path from chrome/test/data/webrtc/resources/tools, 35 // according to platform. If we're running on Linux, requesting pesq will yield 36 // chrome/test/data/webrtc/resources/tools/linux/pesq, whereas the same call on 37 // Windows will yield chrome/test/data/webrtc/resources/tools/win/pesq.exe. 38 // This function does not check the binary actually exists. 39 base::FilePath GetToolForPlatform(const std::string& tool_name); 40 41 extern const base::FilePath::CharType kReferenceFileName360p[]; 42 extern const base::FilePath::CharType kReferenceFileName720p[]; 43 extern const base::FilePath::CharType kYuvFileExtension[]; 44 extern const base::FilePath::CharType kY4mFileExtension[]; 45 extern const char kAdviseOnGclientSolution[]; 46 47 // Executes javascript code which will sleep for |timeout_msec| milliseconds. 48 // Returns true on success. 49 bool SleepInJavascript(content::WebContents* tab_contents, int timeout_msec); 50 51 // This function will execute the provided |javascript| until it causes a call 52 // to window.domAutomationController.send() with |evaluates_to| as the message. 53 // That is, we are NOT checking what the javascript evaluates to. Returns false 54 // if we exceed the TestTimeouts::action_max_timeout(). 55 // TODO(phoglund): Consider a better interaction method with the javascript 56 // than polling javascript methods. 57 bool PollingWaitUntil(const std::string& javascript, 58 const std::string& evaluates_to, 59 content::WebContents* tab_contents); 60 bool PollingWaitUntil(const std::string& javascript, 61 const std::string& evaluates_to, 62 content::WebContents* tab_contents, 63 int poll_interval_msec); 64 65 } // namespace test 66 67 #endif // CHROME_BROWSER_MEDIA_WEBRTC_WEBRTC_BROWSERTEST_COMMON_H_ 68