Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
bf8876e1
Commit
bf8876e1
authored
Jun 17, 2014
by
Anton Stupak
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4106 from edx/anton/fix-seek-log
Video: fix seek tracking log.
parents
8191d3c7
af67873b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
90 additions
and
67 deletions
+90
-67
common/lib/xmodule/xmodule/js/spec/video/video_player_spec.js
+87
-64
common/lib/xmodule/xmodule/js/src/video/03_video_player.js
+3
-3
No files found.
common/lib/xmodule/xmodule/js/spec/video/video_player_spec.js
View file @
bf8876e1
...
...
@@ -356,77 +356,80 @@ function (VideoPlayer) {
describe
(
'onSeek'
,
function
()
{
beforeEach
(
function
()
{
state
=
jasmine
.
initializePlayer
();
state
.
videoEl
=
$
(
'video, iframe'
);
});
runs
(
function
()
{
state
.
videoPlayer
.
play
();
});
waitsFor
(
function
()
{
var
duration
=
state
.
videoPlayer
.
duration
();
describe
(
'when the video is playing'
,
function
()
{
beforeEach
(
function
()
{
runs
(
function
()
{
state
.
videoPlayer
.
play
();
});
return
duration
>
0
&&
state
.
videoPlayer
.
isPlaying
();
},
'video begins playing'
,
WAIT_TIMEOUT
);
});
waitsFor
(
function
()
{
var
duration
=
state
.
videoPlayer
.
duration
();
it
(
'Slider event causes log update'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
,
'log'
);
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
2
}
);
return
duration
>
0
&&
state
.
videoPlayer
.
isPlaying
();
},
'video didn
\'
t start playing'
,
WAIT_TIMEOUT
);
});
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
2
;
},
'currentTime is less than 2 seconds'
,
WAIT_TIMEOUT
);
it
(
'slider event causes log update'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
,
'log'
);
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
2
}
);
});
runs
(
function
()
{
expect
(
state
.
videoPlayer
.
log
).
toHaveBeenCalledWith
(
'seek_video'
,
{
old_time
:
jasmine
.
any
(
Number
),
new_time
:
2
,
type
:
'onSlideSeek'
}
);
});
});
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
2
;
},
'currentTime is less than 2 seconds'
,
WAIT_TIMEOUT
);
it
(
'seek the player'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
.
player
,
'seekTo'
).
andCallThrough
();
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
30
}
);
runs
(
function
()
{
var
args
=
state
.
videoPlayer
.
log
.
calls
[
0
].
args
;
expect
(
args
[
0
]).
toBe
(
'seek_video'
);
expect
(
args
[
1
].
old_time
).
toBeLessThan
(
2
);
expect
(
args
[
1
].
new_time
).
toBe
(
2
);
expect
(
args
[
1
].
type
).
toBe
(
'onSlideSeek'
);
});
});
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
30
;
},
'currentTime is less than 30 seconds'
,
WAIT_TIMEOUT
);
it
(
'seek the player'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
.
player
,
'seekTo'
)
.
andCallThrough
();
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
30
}
);
});
runs
(
function
()
{
expect
(
state
.
videoPlayer
.
player
.
seekTo
)
.
toHaveBeenCalledWith
(
30
,
true
);
});
});
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
30
;
},
'currentTime is less than 30 seconds'
,
WAIT_TIMEOUT
);
it
(
'call updatePlayTime on player'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
,
'updatePlayTime'
).
andCallThrough
();
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
30
}
);
runs
(
function
()
{
expect
(
state
.
videoPlayer
.
player
.
seekTo
)
.
toHaveBeenCalledWith
(
30
,
true
);
});
});
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
30
;
},
'currentTime is less than 30 seconds'
,
WAIT_TIMEOUT
);
it
(
'call updatePlayTime on player'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
,
'updatePlayTime'
)
.
andCallThrough
();
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
30
}
);
});
runs
(
function
()
{
expect
(
state
.
videoPlayer
.
updatePlayTime
)
.
toHaveBeenCalledWith
(
jasmine
.
any
(
Number
));
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
30
;
},
'currentTime is less than 30 seconds'
,
WAIT_TIMEOUT
);
runs
(
function
()
{
expect
(
state
.
videoPlayer
.
updatePlayTime
)
.
toHaveBeenCalledWith
(
30
,
true
);
});
});
});
...
...
@@ -452,13 +455,31 @@ function (VideoPlayer) {
describe
(
'when the video is not playing'
,
function
()
{
beforeEach
(
function
()
{
state
=
jasmine
.
initializePlayer
();
spyOn
(
state
.
videoPlayer
,
'setPlaybackRate'
)
.
andCallThrough
();
});
spyOn
(
state
.
videoPlayer
,
'updatePlayTime'
).
andCallThrough
();
spyOn
(
state
,
'setSpeed'
).
andCallThrough
();
spyOn
(
state
.
videoPlayer
,
'log'
).
andCallThrough
();
spyOn
(
state
.
videoPlayer
.
player
,
'setPlaybackRate'
).
andCallThrough
();
spyOn
(
state
.
videoPlayer
,
'setPlaybackRate'
).
andCallThrough
();
it
(
'slider event causes log update'
,
function
()
{
runs
(
function
()
{
spyOn
(
state
.
videoPlayer
,
'log'
);
state
.
videoProgressSlider
.
onSlide
(
jQuery
.
Event
(
'slide'
),
{
value
:
2
}
);
});
waitsFor
(
function
()
{
return
state
.
videoPlayer
.
currentTime
>=
2
;
},
'currentTime is less than 2 seconds'
,
WAIT_TIMEOUT
);
runs
(
function
()
{
expect
(
state
.
videoPlayer
.
log
).
toHaveBeenCalledWith
(
'seek_video'
,
{
old_time
:
0
,
new_time
:
2
,
type
:
'onSlideSeek'
}
);
});
});
it
(
'video has a correct speed'
,
function
()
{
...
...
@@ -483,7 +504,8 @@ function (VideoPlayer) {
it
(
'set the volume on player'
,
function
()
{
spyOn
(
state
.
videoPlayer
.
player
,
'setVolume'
);
state
.
videoPlayer
.
onVolumeChange
(
60
);
expect
(
state
.
videoPlayer
.
player
.
setVolume
).
toHaveBeenCalledWith
(
60
);
expect
(
state
.
videoPlayer
.
player
.
setVolume
)
.
toHaveBeenCalledWith
(
60
);
});
describe
(
'when the video is not playing'
,
function
()
{
...
...
@@ -522,7 +544,8 @@ function (VideoPlayer) {
});
it
(
'does not trigger updatePlayTime event'
,
function
()
{
expect
(
state
.
videoPlayer
.
updatePlayTime
).
not
.
toHaveBeenCalled
();
expect
(
state
.
videoPlayer
.
updatePlayTime
)
.
not
.
toHaveBeenCalled
();
});
});
...
...
common/lib/xmodule/xmodule/js/src/video/03_video_player.js
View file @
bf8876e1
...
...
@@ -431,7 +431,8 @@ function (HTML5Video, Resizer) {
// Reinitialized on a onSeek event.
function
onSeek
(
params
)
{
var
time
=
params
.
time
,
type
=
params
.
type
;
type
=
params
.
type
,
oldTime
=
this
.
videoPlayer
.
currentTime
;
// After the user seeks, the video will start playing from
// the sought point, and stop playing at the end.
...
...
@@ -441,11 +442,10 @@ function (HTML5Video, Resizer) {
}
this
.
videoPlayer
.
seekTo
(
time
);
this
.
videoPlayer
.
log
(
'seek_video'
,
{
old_time
:
this
.
videoPlayer
.
current
Time
,
old_time
:
old
Time
,
new_time
:
time
,
type
:
type
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment