Class: Selenium::WebDriver::Safari::Extension
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Safari::Extension
- Defined in:
- lib/selenium/webdriver/safari/extension.rb
Constant Summary collapse
- PLIST =
<<-XML <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Available Updates</key> <dict> <key>Last Update Check Time</key> <real>370125644.75941497</real> <key>Updates List</key> <array/> </dict> <key>Installed Extensions</key> <array> <dict> <key>Added Non-Default Toolbar Items</key> <array/> <key>Archive File Name</key> <string>WebDriver.safariextz</string> <key>Bundle Directory Name</key> <string>WebDriver.safariextension</string> <key>Enabled</key> <true/> <key>Hidden Bars</key> <array/> <key>Removed Default Toolbar Items</key> <array/> </dict> </array> <key>Version</key> <integer>1</integer> </dict> </plist> XML
Instance Method Summary collapse
- #backup_directory ⇒ Object
- #extension_destination ⇒ Object
- #extension_source ⇒ Object
-
#initialize(opts = {}) ⇒ Extension
constructor
A new instance of Extension.
- #install ⇒ Object
- #install_directory ⇒ Object
- #plist_destination ⇒ Object
- #safari_data_dir ⇒ Object
- #uninstall ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Extension
Returns a new instance of Extension.
41 42 43 44 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 41 def initialize(opts = {}) @custom_data_dir = opts[:custom_data_dir] @installed = false end |
Instance Method Details
#backup_directory ⇒ Object
84 85 86 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 84 def backup_directory Pathname.new("#{install_directory.to_s}.bak") end |
#extension_destination ⇒ Object
80 81 82 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 80 def extension_destination install_directory.join('WebDriver.safariextz') end |
#extension_source ⇒ Object
76 77 78 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 76 def extension_source Safari.resource_path.join('SafariDriver.safariextz') end |
#install ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 46 def install return if @installed if install_directory.exist? FileUtils.mv install_directory.to_s, backup_directory.to_s end install_directory.mkpath extension_destination.rmtree if extension_destination.exist? FileUtils.cp extension_source.to_s, extension_destination.to_s plist_destination.open('w') { |io| io << PLIST } at_exit { uninstall } @installed = true end |
#install_directory ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 92 def install_directory @install_directory ||= ( data_dir = Pathname.new(@custom_data_dir || safari_data_dir) unless data_dir.exist? && data_dir.directory? raise Errno::ENOENT, "Safari data directory not found at #{dir.to_s}" end data_dir.join('Extensions') ) end |
#plist_destination ⇒ Object
88 89 90 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 88 def plist_destination install_directory.join('Extensions.plist') end |
#safari_data_dir ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 104 def safari_data_dir current = Platform.os case current when :macosx Pathname.new(Platform.home).join('Library/Safari') when :windows Pathname.new(ENV['APPDATA']).join('Apple Computer/Safari') else raise Error::WebDriverError, "unsupported platform: #{current}" end end |
#uninstall ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/selenium/webdriver/safari/extension.rb', line 64 def uninstall return unless @installed install_directory.rmtree if install_directory.exist? if backup_directory.exist? FileUtils.mv backup_directory.to_s, install_directory.to_s end ensure @installed = false end |