webkit_remote 0.5.5 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -8
- data/Gemfile +6 -7
- data/Gemfile.lock +62 -62
- data/README.md +2 -17
- data/VERSION +1 -1
- data/lib/webkit_remote/browser.rb +1 -1
- data/lib/webkit_remote/client/console.rb +3 -19
- data/lib/webkit_remote/client/console_events.rb +0 -25
- data/lib/webkit_remote/client/input.rb +7 -3
- data/lib/webkit_remote/client/network_events.rb +4 -9
- data/lib/webkit_remote/client/page.rb +4 -4
- data/lib/webkit_remote/client/runtime.rb +56 -4
- data/lib/webkit_remote/process.rb +14 -116
- data/lib/webkit_remote/top_level.rb +3 -3
- data/test/fixtures/html/input.html +1 -2
- data/test/helper.rb +1 -1
- data/test/webkit_remote/browser_test.rb +1 -1
- data/test/webkit_remote/client/console_test.rb +16 -24
- data/test/webkit_remote/client/dom_test.rb +1 -1
- data/test/webkit_remote/client/input_test.rb +13 -15
- data/test/webkit_remote/client/js_object_group_test.rb +2 -2
- data/test/webkit_remote/client/js_object_test.rb +1 -1
- data/test/webkit_remote/client/network_test.rb +11 -11
- data/test/webkit_remote/client/runtime_test.rb +8 -8
- data/test/webkit_remote/client_test.rb +7 -8
- data/test/webkit_remote/process_test.rb +14 -3
- data/test/webkit_remote/rpc_test.rb +1 -2
- data/test/webkit_remote_test.rb +2 -2
- data/webkit_remote.gemspec +46 -48
- metadata +40 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c112ed6ae2e4001acb79f3a73b1838fe69ead2f1
|
4
|
+
data.tar.gz: d02f2ca1866953a508ee086e6f31073da36918a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11dd9e7b9cecfde2a016e29cff3cd27b7d1df868aa3cc41e3dff0f59a48d4dfa7a2cda4d2c531bf742c40c6d8c25a36b578ead32530b753eb3f19b09739fc9c3
|
7
|
+
data.tar.gz: f3c024ee48d1507279075359099822933408118bb83eb304a9fdccc9a31da72ed22f2a93ba817578681067119f9be73404ea94d0156606a3846053e2593eebff
|
data/.travis.yml
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
sudo: false
|
2
|
+
dist: trusty
|
1
3
|
language: ruby
|
4
|
+
addons:
|
5
|
+
apt:
|
6
|
+
sources:
|
7
|
+
- google-chrome
|
8
|
+
packages:
|
9
|
+
- google-chrome-stable
|
2
10
|
rvm:
|
3
|
-
|
4
|
-
|
5
|
-
- 2.1.0
|
6
|
-
before_install:
|
7
|
-
- "sudo sh -c \"echo \\\"deb http://dl.google.com/linux/deb/ stable main\\\" >> /etc/apt/sources.list\""
|
8
|
-
- "sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -"
|
9
|
-
- "sudo apt-get -qq update"
|
10
|
-
- "sudo apt-get -qq install google-chrome-stable"
|
11
|
+
- 2.3.4
|
12
|
+
- 2.4.1
|
data/Gemfile
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
source '
|
2
|
-
gem 'ws_sync_client', '>= 0.1.
|
3
|
-
gem 'posix-spawn', '>= 0.3.8'
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
gem 'ws_sync_client', '>= 0.1.2'
|
4
3
|
|
5
4
|
group :development do
|
6
5
|
gem 'bundler', '>= 1.5.3'
|
7
|
-
gem '
|
6
|
+
gem 'byebug', '>= 9.0.6'
|
8
7
|
gem 'jeweler', '>= 2.0.1'
|
9
8
|
gem 'minitest', '>= 5.3.0'
|
10
9
|
gem 'puma', '>= 2.8.0'
|
11
|
-
gem 'rack', '>= 1.
|
12
|
-
gem 'rack-contrib', '>= 1.
|
10
|
+
gem 'rack', '>= 1.6.8'
|
11
|
+
gem 'rack-contrib', '>= 1.2.0'
|
13
12
|
gem 'rdoc', '>= 4.1.1'
|
14
|
-
gem 'simplecov', '>= 0.
|
13
|
+
gem 'simplecov', '>= 0.9.1'
|
15
14
|
gem 'yard', '>= 0.8.7.3'
|
16
15
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,89 +1,89 @@
|
|
1
1
|
GEM
|
2
|
-
remote:
|
2
|
+
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
addressable (2.
|
5
|
-
builder (3.2.
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
debugger-linecache (1.2.0)
|
12
|
-
debugger-ruby_core_source (1.3.2)
|
13
|
-
descendants_tracker (0.0.3)
|
14
|
-
docile (1.1.3)
|
15
|
-
faraday (0.9.0)
|
4
|
+
addressable (2.4.0)
|
5
|
+
builder (3.2.3)
|
6
|
+
byebug (9.0.6)
|
7
|
+
descendants_tracker (0.0.4)
|
8
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
9
|
+
docile (1.1.5)
|
10
|
+
faraday (0.9.2)
|
16
11
|
multipart-post (>= 1.2, < 3)
|
17
|
-
git (1.
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
git (1.3.0)
|
13
|
+
git-version-bump (0.15.1)
|
14
|
+
github_api (0.16.0)
|
15
|
+
addressable (~> 2.4.0)
|
16
|
+
descendants_tracker (~> 0.0.4)
|
21
17
|
faraday (~> 0.8, < 0.10)
|
22
|
-
hashie (>=
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
jeweler (2.0.1)
|
18
|
+
hashie (>= 3.4)
|
19
|
+
mime-types (>= 1.16, < 3.0)
|
20
|
+
oauth2 (~> 1.0)
|
21
|
+
hashie (3.5.5)
|
22
|
+
highline (1.7.8)
|
23
|
+
jeweler (2.3.7)
|
29
24
|
builder
|
30
|
-
bundler (>= 1
|
25
|
+
bundler (>= 1)
|
31
26
|
git (>= 1.2.5)
|
32
|
-
github_api
|
27
|
+
github_api (~> 0.16.0)
|
33
28
|
highline (>= 1.6.15)
|
34
29
|
nokogiri (>= 1.5.10)
|
30
|
+
psych (~> 2.2)
|
35
31
|
rake
|
36
32
|
rdoc
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
33
|
+
semver2
|
34
|
+
json (2.1.0)
|
35
|
+
jwt (1.5.6)
|
36
|
+
mime-types (2.99.3)
|
37
|
+
mini_portile2 (2.2.0)
|
38
|
+
minitest (5.10.2)
|
39
|
+
multi_json (1.12.1)
|
40
|
+
multi_xml (0.6.0)
|
44
41
|
multipart-post (2.0.0)
|
45
|
-
nokogiri (1.
|
46
|
-
|
47
|
-
oauth2 (
|
48
|
-
faraday (>= 0.8, < 0.
|
49
|
-
jwt (~>
|
42
|
+
nokogiri (1.8.0)
|
43
|
+
mini_portile2 (~> 2.2.0)
|
44
|
+
oauth2 (1.4.0)
|
45
|
+
faraday (>= 0.8, < 0.13)
|
46
|
+
jwt (~> 1.0)
|
50
47
|
multi_json (~> 1.3)
|
51
48
|
multi_xml (~> 0.5)
|
52
|
-
rack (
|
53
|
-
|
54
|
-
puma (
|
55
|
-
|
56
|
-
rack (1.
|
57
|
-
|
58
|
-
rack (
|
59
|
-
rake (
|
60
|
-
rdoc (
|
61
|
-
|
62
|
-
simplecov (0.
|
49
|
+
rack (>= 1.2, < 3)
|
50
|
+
psych (2.2.4)
|
51
|
+
puma (3.9.1)
|
52
|
+
rack (1.6.8)
|
53
|
+
rack-contrib (1.4.0)
|
54
|
+
git-version-bump (~> 0.15)
|
55
|
+
rack (~> 1.4)
|
56
|
+
rake (12.0.0)
|
57
|
+
rdoc (5.1.0)
|
58
|
+
semver2 (3.4.2)
|
59
|
+
simplecov (0.14.1)
|
63
60
|
docile (~> 1.1.0)
|
64
|
-
|
65
|
-
simplecov-html (~> 0.
|
66
|
-
simplecov-html (0.
|
67
|
-
|
61
|
+
json (>= 1.8, < 3)
|
62
|
+
simplecov-html (~> 0.10.0)
|
63
|
+
simplecov-html (0.10.1)
|
64
|
+
thread_safe (0.3.6)
|
65
|
+
websocket (1.2.4)
|
68
66
|
websocket-native (1.0.0)
|
69
|
-
ws_sync_client (0.1.
|
70
|
-
websocket (>= 1.
|
67
|
+
ws_sync_client (0.1.2)
|
68
|
+
websocket (>= 1.2.4)
|
71
69
|
websocket-native (>= 1.0.0)
|
72
|
-
yard (0.
|
70
|
+
yard (0.9.9)
|
73
71
|
|
74
72
|
PLATFORMS
|
75
73
|
ruby
|
76
74
|
|
77
75
|
DEPENDENCIES
|
78
76
|
bundler (>= 1.5.3)
|
79
|
-
|
77
|
+
byebug (>= 9.0.6)
|
80
78
|
jeweler (>= 2.0.1)
|
81
79
|
minitest (>= 5.3.0)
|
82
|
-
posix-spawn (>= 0.3.8)
|
83
80
|
puma (>= 2.8.0)
|
84
|
-
rack (>= 1.
|
85
|
-
rack-contrib (>= 1.
|
81
|
+
rack (>= 1.6.8)
|
82
|
+
rack-contrib (>= 1.2.0)
|
86
83
|
rdoc (>= 4.1.1)
|
87
|
-
simplecov (>= 0.
|
88
|
-
ws_sync_client (>= 0.1.
|
84
|
+
simplecov (>= 0.9.1)
|
85
|
+
ws_sync_client (>= 0.1.2)
|
89
86
|
yard (>= 0.8.7.3)
|
87
|
+
|
88
|
+
BUNDLED WITH
|
89
|
+
1.14.6
|
data/README.md
CHANGED
@@ -45,22 +45,8 @@ platform-dependent functionality is launching and shutting down the browser
|
|
45
45
|
process, everything else should work for any WebKit-based browser that
|
46
46
|
implements the remote debugging protocol.
|
47
47
|
|
48
|
-
Google Chrome
|
49
|
-
[
|
50
|
-
|
51
|
-
Install Xvfb on Fedora.
|
52
|
-
|
53
|
-
```bash
|
54
|
-
sudo yum install xorg-x11-server-Xvfb
|
55
|
-
```
|
56
|
-
|
57
|
-
Install Xvfb on Ubuntu.
|
58
|
-
|
59
|
-
```bash
|
60
|
-
sudo apt-get install xvfb
|
61
|
-
```
|
62
|
-
|
63
|
-
Xvfb is included in OSX.
|
48
|
+
Google Chrome 60 and above
|
49
|
+
[can be used in headless mode](https://developers.google.com/web/updates/2017/04/headless-chrome).
|
64
50
|
|
65
51
|
|
66
52
|
## Installation
|
@@ -241,4 +227,3 @@ unstable features at
|
|
241
227
|
## Copyright
|
242
228
|
|
243
229
|
Copyright (c) 2012 Victor Costan. See LICENSE.txt for further details.
|
244
|
-
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
@@ -5,7 +5,7 @@ module WebkitRemote
|
|
5
5
|
|
6
6
|
# The master connection to the remote debugging server in a Webkit process.
|
7
7
|
class Browser
|
8
|
-
# Sets up a debugging connection to a Webkit
|
8
|
+
# Sets up a debugging connection to a Webkit process.
|
9
9
|
#
|
10
10
|
# @param [Hash] opts info on the browser to connect to
|
11
11
|
# @option opts [String] host the hostname / IP address of the Webkit remote
|
@@ -21,8 +21,9 @@ module Console
|
|
21
21
|
#
|
22
22
|
# @return [WebkitRemote::Client] self
|
23
23
|
def clear_console
|
24
|
-
@rpc.call '
|
25
|
-
|
24
|
+
@rpc.call 'Runtime.discardConsoleEntries'
|
25
|
+
@console_messages.each(&:release_params)
|
26
|
+
@console_messages.clear
|
26
27
|
self
|
27
28
|
end
|
28
29
|
|
@@ -37,12 +38,6 @@ module Console
|
|
37
38
|
@console_messages << message
|
38
39
|
end
|
39
40
|
|
40
|
-
# @private Called by the ConsoleCleared event constructor.
|
41
|
-
def console_cleared
|
42
|
-
@console_messages.each(&:release_params)
|
43
|
-
@console_messages.clear
|
44
|
-
end
|
45
|
-
|
46
41
|
# @private Called by the Client constructor to set up Console data.
|
47
42
|
def initialize_console
|
48
43
|
@console_events = false
|
@@ -68,9 +63,6 @@ class ConsoleMessage
|
|
68
63
|
# The documented values are :debug, :error, :log, :tip, and :warning.
|
69
64
|
attr_reader :level
|
70
65
|
|
71
|
-
# @return [Integer] how many times this message was repeated
|
72
|
-
attr_accessor :count
|
73
|
-
|
74
66
|
# @return [Symbol] the component that produced this message
|
75
67
|
#
|
76
68
|
# The documented values are :console_api, :html, :javascript, :network,
|
@@ -83,12 +75,6 @@ class ConsoleMessage
|
|
83
75
|
# This is set for console messages that indicate network errors.
|
84
76
|
attr_reader :network_resource
|
85
77
|
|
86
|
-
# @return [Symbol] the behavior that produced this message
|
87
|
-
#
|
88
|
-
# The documented values are :assert, :dir, :dirxml, :endGroup, :log,
|
89
|
-
# :startGroup, :startGroupCollapsed, and :trace.
|
90
|
-
attr_reader :type
|
91
|
-
|
92
78
|
# @return [String] the URL of the file that caused this message
|
93
79
|
attr_reader :source_url
|
94
80
|
|
@@ -121,7 +107,6 @@ class ConsoleMessage
|
|
121
107
|
@params = []
|
122
108
|
end
|
123
109
|
@params.freeze
|
124
|
-
@count = raw_message['repeatCount'] ? raw_message['repeatCount'].to_i : 1
|
125
110
|
if raw_message['source']
|
126
111
|
@reason = raw_message['source'].gsub('-', '_').to_sym
|
127
112
|
else
|
@@ -129,7 +114,6 @@ class ConsoleMessage
|
|
129
114
|
end
|
130
115
|
@stack_trace = self.class.parse_stack_trace raw_message['stackTrace']
|
131
116
|
@text = raw_message['text']
|
132
|
-
@type = raw_message['type'] ? raw_message['type'].to_sym : nil
|
133
117
|
@source_url = raw_message['url']
|
134
118
|
end
|
135
119
|
|
@@ -48,31 +48,6 @@ class ConsoleMessage < WebkitRemote::Event
|
|
48
48
|
end
|
49
49
|
end # class WebkitRemote::Event::ConsoleMessage
|
50
50
|
|
51
|
-
# Emitted when the same console message is produced repeatedly.
|
52
|
-
class ConsoleMessageRepeated < WebkitRemote::Event
|
53
|
-
register 'Console.messageRepeatCountUpdated'
|
54
|
-
|
55
|
-
# @return [WebkitRemote::Client::ConsoleMessage] the repeated message
|
56
|
-
attr_reader :message
|
57
|
-
|
58
|
-
# @return [Number] the number of times that the message was repeated
|
59
|
-
attr_reader :count
|
60
|
-
|
61
|
-
# @private Use Event#for instead of calling this constructor directly.
|
62
|
-
def initialize(rpc_event, client)
|
63
|
-
super
|
64
|
-
|
65
|
-
@message = client.console_messages.last
|
66
|
-
@count = raw_data['count'] ? raw_data['count'].to_i : nil
|
67
|
-
@message.count = @count if @count
|
68
|
-
end
|
69
|
-
|
70
|
-
# @private Use Event#can_receive instead of calling this directly.
|
71
|
-
def self.can_reach?(client)
|
72
|
-
client.console_events
|
73
|
-
end
|
74
|
-
end # class WebkitRemote::Event::ConsoleMessageRepeated
|
75
|
-
|
76
51
|
# Emitted when the console is cleared.
|
77
52
|
class ConsoleCleared < WebkitRemote::Event
|
78
53
|
register 'Console.messagesCleared'
|
@@ -33,6 +33,11 @@ module Input
|
|
33
33
|
|
34
34
|
options[:timestamp] = opts[:time] if opts[:time]
|
35
35
|
options[:clickCount] = opts[:clicks] if opts[:clicks]
|
36
|
+
if opts[:button]
|
37
|
+
options[:button] = opts[:button].to_s
|
38
|
+
else
|
39
|
+
options[:button] = 'none'
|
40
|
+
end
|
36
41
|
if opts[:modifiers]
|
37
42
|
flags = 0
|
38
43
|
opts[:modifiers].each do |modifier|
|
@@ -71,7 +76,7 @@ module Input
|
|
71
76
|
# useful for shortcut (accelerator) key handling; ('' by default)
|
72
77
|
# @option opts [Number] vkey the Windows virtual key code for the key;
|
73
78
|
# see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Virtual_key_codes
|
74
|
-
# @option opts [Number]
|
79
|
+
# @option opts [Number] key the unique key identifier (e.g., 'U+0041');
|
75
80
|
# ('' by default)
|
76
81
|
# @option opts [Boolean] auto_repeat true if the event was generated by an
|
77
82
|
# auto-repeat while the key was being held down
|
@@ -112,7 +117,7 @@ module Input
|
|
112
117
|
options[:modifiers] = flags
|
113
118
|
end
|
114
119
|
|
115
|
-
options[:
|
120
|
+
options[:key] = opts[:key] if opts[:key]
|
116
121
|
options[:windowsVirtualKeyCode] = opts[:vkey] if opts[:vkey]
|
117
122
|
options[:unmodifiedText] = opts[:unmodified_text] if opts[:unmodified_text]
|
118
123
|
if opts[:text]
|
@@ -133,4 +138,3 @@ include WebkitRemote::Client::Input
|
|
133
138
|
end # namespace WebkitRemote::Client
|
134
139
|
|
135
140
|
end # namespace WebkitRemote
|
136
|
-
|
@@ -150,12 +150,6 @@ class NetworkRequest < WebkitRemote::Event
|
|
150
150
|
@redirect_response = WebkitRemote::Client::NetworkResponse.new(
|
151
151
|
raw_data['redirectResponse'])
|
152
152
|
end
|
153
|
-
if raw_data['stackTrace']
|
154
|
-
@stack_trace = WebkitRemote::Client::ConsoleMessage.parse_stack_trace(
|
155
|
-
raw_initiator['stackTrace'])
|
156
|
-
else
|
157
|
-
@stack_trace = nil
|
158
|
-
end
|
159
153
|
@timestamp = raw_data['timestamp']
|
160
154
|
|
161
155
|
@resource = client.network_resource raw_data['requestId']
|
@@ -509,7 +503,8 @@ class NetworkRequestInitiator
|
|
509
503
|
# @return [Number] number of the line that references the requested resource
|
510
504
|
attr_reader :line
|
511
505
|
|
512
|
-
# @return [WebkitRemote::
|
506
|
+
# @return [WebkitRemote::Client::StackTrace] JavaScript trace, set only for
|
507
|
+
# :script initiators
|
513
508
|
attr_reader :stack_trace
|
514
509
|
|
515
510
|
# @private Use Event#for instead of calling this constructor directly
|
@@ -519,8 +514,8 @@ class NetworkRequestInitiator
|
|
519
514
|
else
|
520
515
|
@line = nil
|
521
516
|
end
|
522
|
-
|
523
|
-
|
517
|
+
|
518
|
+
@stack_trace = WebkitRemote::Client::StackTrace.parse raw_initiator['stack']
|
524
519
|
@type = (raw_initiator['type'] || 'other').to_sym
|
525
520
|
@url = raw_initiator['url']
|
526
521
|
end
|
@@ -13,19 +13,19 @@ module Page
|
|
13
13
|
self
|
14
14
|
end
|
15
15
|
|
16
|
-
# Reloads
|
16
|
+
# Reloads the current page.
|
17
17
|
#
|
18
18
|
# @param [Hash] opts quirky behavior bits
|
19
19
|
# @option opts [Boolean] skip_cache if true, the cache is not used; this is
|
20
|
-
# what happens when the user presses Shift+refresh
|
20
|
+
# what happens when the user presses Shift + the refresh combo
|
21
21
|
# @option opts [String] onload a JavaScript that will be injected in all the
|
22
22
|
# page's frames after reloading
|
23
23
|
# @return [WebkitRemote::Client] self
|
24
|
-
def
|
24
|
+
def reload(opts = {})
|
25
25
|
options = {}
|
26
26
|
options[:ignoreCache] = true if opts[:skip_cache]
|
27
27
|
options[:scriptToEvaluateOnLoad] = opts[:onload] if opts[:onload]
|
28
|
-
@rpc.call 'Page.
|
28
|
+
@rpc.call 'Page.reload', options
|
29
29
|
self
|
30
30
|
end
|
31
31
|
|
@@ -104,10 +104,6 @@ class UndefinedClass
|
|
104
104
|
true
|
105
105
|
end
|
106
106
|
|
107
|
-
def nil?
|
108
|
-
true
|
109
|
-
end
|
110
|
-
|
111
107
|
def to_a
|
112
108
|
[]
|
113
109
|
end
|
@@ -506,6 +502,62 @@ class JsProperty
|
|
506
502
|
end
|
507
503
|
end # class WebkitRemote::Client::JsProperty
|
508
504
|
|
505
|
+
# The call stack that represents the context of an assertion or error.
|
506
|
+
class StackTrace
|
507
|
+
# Parses a StackTrace object returned by a RPC request.
|
508
|
+
#
|
509
|
+
# @param [Array<String, Object>] raw_stack_trace the raw StackTrace object
|
510
|
+
# in the Runtime domain returned by an RPC request
|
511
|
+
def initialize(raw_stack_trace)
|
512
|
+
@description = raw_stack_trace['description']
|
513
|
+
@frames = raw_stack_trace['callFrames'].map do |raw_frame|
|
514
|
+
frame = {}
|
515
|
+
if raw_frame['columnNumber']
|
516
|
+
frame[:column] = raw_frame['columnNumber'].to_i
|
517
|
+
end
|
518
|
+
if raw_frame['lineNumber']
|
519
|
+
frame[:line] = raw_frame['lineNumber'].to_i
|
520
|
+
end
|
521
|
+
if raw_frame['functionName']
|
522
|
+
frame[:function] = raw_frame['functionName']
|
523
|
+
end
|
524
|
+
if raw_frame['url']
|
525
|
+
frame[:url] = raw_frame['url']
|
526
|
+
end
|
527
|
+
frame
|
528
|
+
end
|
529
|
+
|
530
|
+
parent_trace = raw_stack_trace['parent']
|
531
|
+
if parent_trace
|
532
|
+
@parent = StackTrace.new parent_trace
|
533
|
+
else
|
534
|
+
@parent = nil
|
535
|
+
end
|
536
|
+
end
|
537
|
+
|
538
|
+
# @return [String] label of the trace; for async traces, might be the name of
|
539
|
+
# a function that initiated the async call
|
540
|
+
attr_reader :description
|
541
|
+
|
542
|
+
# @return [Array<Symbol, Object>] Ruby-friendly stack trace
|
543
|
+
attr_reader :frames
|
544
|
+
|
545
|
+
# @return [WebkitRemote::Client::StackTrace] stack trace for a parent async
|
546
|
+
# call; may be null
|
547
|
+
attr_reader :parent
|
548
|
+
|
549
|
+
# Parses a StackTrace object returned by a RPC request.
|
550
|
+
#
|
551
|
+
# @param [Array<String, Object>] raw_stack_trace the raw StackTrace object
|
552
|
+
# in the Runtime domain returned by an RPC request
|
553
|
+
# @return [WebkitRemote::Client::StackTrace]
|
554
|
+
def self.parse(raw_stack_trace)
|
555
|
+
return nil unless raw_stack_trace
|
556
|
+
|
557
|
+
StackTrace.new raw_stack_trace
|
558
|
+
end
|
559
|
+
end # class WebkitRemote::Client::StackTrace
|
560
|
+
|
509
561
|
end # namespace WebkitRemote::Client
|
510
562
|
|
511
563
|
end # namespace WebkitRemote
|