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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_COMMON_MAC_MOCK_LAUNCHD_H_ 6 #define CHROME_COMMON_MAC_MOCK_LAUNCHD_H_ 7 8 #include <launch.h> 9 10 #include <string> 11 12 #include "base/files/file_path.h" 13 #include "base/mac/scoped_cftyperef.h" 14 #include "base/memory/scoped_ptr.h" 15 #include "chrome/common/mac/launchd.h" 16 #include "chrome/common/multi_process_lock.h" 17 18 namespace base { 19 class MessageLoop; 20 } 21 22 // TODO(dmaclach): Write this in terms of a real mock. 23 // http://crbug.com/76923 24 class MockLaunchd : public Launchd { 25 public: 26 static bool MakeABundle(const base::FilePath& dst, 27 const std::string& name, 28 base::FilePath* bundle_root, 29 base::FilePath* executable); 30 31 MockLaunchd(const base::FilePath& file, base::MessageLoop* loop, 32 bool create_socket, bool as_service); 33 virtual ~MockLaunchd(); 34 35 virtual CFDictionaryRef CopyExports() OVERRIDE; 36 virtual CFDictionaryRef CopyJobDictionary(CFStringRef label) OVERRIDE; 37 virtual CFDictionaryRef CopyDictionaryByCheckingIn(CFErrorRef* error) 38 OVERRIDE; 39 virtual bool RemoveJob(CFStringRef label, CFErrorRef* error) OVERRIDE; 40 virtual bool RestartJob(Domain domain, 41 Type type, 42 CFStringRef name, 43 CFStringRef session_type) OVERRIDE; 44 virtual CFMutableDictionaryRef CreatePlistFromFile( 45 Domain domain, 46 Type type, 47 CFStringRef name) OVERRIDE; 48 virtual bool WritePlistToFile(Domain domain, 49 Type type, 50 CFStringRef name, 51 CFDictionaryRef dict) OVERRIDE; 52 virtual bool DeletePlist(Domain domain, 53 Type type, 54 CFStringRef name) OVERRIDE; 55 56 void SignalReady(); 57 58 bool restart_called() const { return restart_called_; } 59 bool remove_called() const { return remove_called_; } 60 bool checkin_called() const { return checkin_called_; } 61 bool write_called() const { return write_called_; } 62 bool delete_called() const { return delete_called_; } 63 64 private: 65 base::FilePath file_; 66 std::string pipe_name_; 67 base::MessageLoop* message_loop_; 68 scoped_ptr<MultiProcessLock> running_lock_; 69 bool create_socket_; 70 bool as_service_; 71 bool restart_called_; 72 bool remove_called_; 73 bool checkin_called_; 74 bool write_called_; 75 bool delete_called_; 76 }; 77 78 #endif // CHROME_COMMON_MAC_MOCK_LAUNCHD_H_ 79