webdriver-firefox 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,154 +6,20 @@ module Selenium
6
6
 
7
7
  # @api private
8
8
  class Binary
9
-
10
- NO_FOCUS_LIBRARY_NAME = "x_ignore_nofocus.so"
11
- NO_FOCUS_LIBRARIES = [
12
- ["#{WebDriver.root}/selenium/webdriver/firefox/native/linux/amd64/#{NO_FOCUS_LIBRARY_NAME}", "amd64/#{NO_FOCUS_LIBRARY_NAME}"],
13
- ["#{WebDriver.root}/selenium/webdriver/firefox/native/linux/x86/#{NO_FOCUS_LIBRARY_NAME}", "x86/#{NO_FOCUS_LIBRARY_NAME}"],
14
- ]
15
-
16
- WAIT_TIMEOUT = 180
17
- QUIT_TIMEOUT = 10
18
-
19
- def start_with(profile, profile_path, *args)
20
- if Platform.cygwin?
21
- profile_path = Platform.cygwin_path(profile_path, :windows => true)
22
- elsif Platform.windows?
23
- profile_path = profile_path.gsub("/", "\\")
24
- end
25
-
26
- ENV['XRE_CONSOLE_LOG'] = profile.log_file if profile.log_file
27
- ENV['XRE_PROFILE_PATH'] = profile_path
28
- ENV['MOZ_NO_REMOTE'] = '1' # able to launch multiple instances
29
- ENV['MOZ_CRASHREPORTER_DISABLE'] = '1' # disable breakpad
30
- ENV['NO_EM_RESTART'] = '1' # prevent the binary from detaching from the console
31
-
32
- if Platform.linux? && (profile.native_events? || profile.load_no_focus_lib?)
33
- modify_link_library_path profile_path
34
- end
35
-
36
- execute(*args)
37
- cope_with_mac_strangeness(args) if Platform.mac?
38
- end
9
+ LONG_WAIT_TIMEOUT = 180
10
+ LONG_QUIT_TIMEOUT = 10
39
11
 
40
12
  def quit
41
13
  return unless @process
42
- @process.poll_for_exit QUIT_TIMEOUT
14
+ @process.poll_for_exit LONG_QUIT_TIMEOUT
43
15
  rescue ChildProcess::TimeoutError
44
16
  # ok, force quit
45
- @process.stop QUIT_TIMEOUT
17
+ @process.stop LONG_QUIT_TIMEOUT
46
18
  end
47
19
 
48
20
  def wait
49
- @process.poll_for_exit(WAIT_TIMEOUT) if @process
50
- end
51
-
52
- private
53
-
54
- def execute(*extra_args)
55
- args = [self.class.path, "-no-remote"] + extra_args
56
- @process = ChildProcess.build(*args)
57
- @process.io.inherit! if $DEBUG
58
- @process.start
59
- end
60
-
61
- def cope_with_mac_strangeness(args)
62
- sleep 0.3
63
-
64
- if @process.crashed?
65
- # ok, trying a restart
66
- sleep 7
67
- execute(*args)
68
- end
69
-
70
- # ensure we're ok
71
- sleep 0.3
72
- if @process.crashed?
73
- raise Error::WebDriverError, "unable to start Firefox cleanly, args: #{args.inspect}"
74
- end
75
- end
76
-
77
- def modify_link_library_path(profile_path)
78
- paths = []
79
-
80
- NO_FOCUS_LIBRARIES.each do |from, to|
81
- dest = File.join(profile_path, to)
82
- FileUtils.mkdir_p File.dirname(dest)
83
- FileUtils.cp from, dest
84
-
85
- paths << File.expand_path(File.dirname(dest))
86
- end
87
-
88
- paths += ENV['LD_LIBRARY_PATH'].to_s.split(File::PATH_SEPARATOR)
89
-
90
- ENV['LD_LIBRARY_PATH'] = paths.uniq.join(File::PATH_SEPARATOR)
91
- ENV['LD_PRELOAD'] = NO_FOCUS_LIBRARY_NAME
21
+ @process.poll_for_exit(LONG_WAIT_TIMEOUT) if @process
92
22
  end
93
-
94
- class << self
95
-
96
- #
97
- # @api private
98
- #
99
- # @see Firefox.path=
100
- #
101
-
102
- def path=(path)
103
- Platform.assert_executable(path)
104
- @path = path
105
- end
106
-
107
- def path
108
- @path ||= case Platform.os
109
- when :macosx
110
- macosx_path
111
- when :windows
112
- windows_path
113
- when :linux, :unix
114
- Platform.find_binary("firefox3", "firefox2", "firefox") || "/usr/bin/firefox"
115
- else
116
- raise Error::WebDriverError, "unknown platform: #{Platform.os}"
117
- end
118
-
119
- @path = Platform.cygwin_path(@path) if Platform.cygwin?
120
-
121
- unless File.file?(@path.to_s)
122
- raise Error::WebDriverError, "Could not find Firefox binary (os=#{Platform.os}). Make sure Firefox is installed or set the path manually with #{self}.path="
123
- end
124
-
125
- @path
126
- end
127
-
128
- private
129
-
130
- def windows_path
131
- windows_registry_path || Platform.find_in_program_files("\\Mozilla Firefox\\firefox.exe") || Platform.find_binary("firefox")
132
- end
133
-
134
- def macosx_path
135
- path = "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
136
- path = Platform.find_binary("firefox-bin") unless File.exist?(path)
137
-
138
- path
139
- end
140
-
141
- def windows_registry_path
142
- require 'win32/registry'
143
-
144
- lm = Win32::Registry::HKEY_LOCAL_MACHINE
145
- lm.open("SOFTWARE\\Mozilla\\Mozilla Firefox") do |reg|
146
- main = lm.open("SOFTWARE\\Mozilla\\Mozilla Firefox\\#{reg.keys[0]}\\Main")
147
- if entry = main.find { |key, type, data| key =~ /pathtoexe/i }
148
- return entry.last
149
- end
150
- end
151
- rescue LoadError
152
- # older JRuby or IronRuby does not have win32/registry
153
- rescue Win32::Registry::Error
154
- end
155
- end # class << self
156
-
157
23
  end # Binary
158
24
  end # Firefox
159
25
  end # WebDriver
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2013 Solano Labs All Rights Reserved
2
2
 
3
3
  module WebdriverFirefox
4
- VERSION = '0.0.7'
4
+ VERSION = '0.0.8'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webdriver-firefox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-12 00:00:00.000000000 Z
12
+ date: 2013-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: selenium-webdriver