@@ -907,8 +907,19 @@ Error* QWebkitProxy::GetBrowserLog(base::ListValue** browserLog) {
907
907
908
908
Error* QWebkitProxy::GetPlayerState (const ElementId& element, PlayerState *state) {
909
909
bool isPaused;
910
+
911
+ std::string tagName;
912
+ Error *error = GetElementTagName (element, &tagName);
913
+ if (error)
914
+ return error;
915
+
916
+ if (tagName != " video" && tagName != " audio" ){
917
+ error = new Error (kInvalidElementState );
918
+ return error;
919
+ }
920
+
910
921
base::Value* isPausedValue = NULL ;
911
- Error* error = GetAttribute (element, std::string (" paused" ), &isPausedValue);
922
+ error = GetAttribute (element, std::string (" paused" ), &isPausedValue);
912
923
scoped_ptr<base::Value> scoped_isPausedValue (isPausedValue);
913
924
if (error)
914
925
return error;
@@ -940,6 +951,17 @@ Error* QWebkitProxy::GetPlayerState(const ElementId& element, PlayerState *state
940
951
Error* QWebkitProxy::SetPlayerState (const ElementId& element, const PlayerState state) {
941
952
Value* value = NULL ;
942
953
Error* error = NULL ;
954
+
955
+ std::string tagName;
956
+ error = GetElementTagName (element, &tagName);
957
+ if (error)
958
+ return error;
959
+
960
+ if (tagName != " video" && tagName != " audio" ){
961
+ error = new Error (kInvalidElementState );
962
+ return error;
963
+ }
964
+
943
965
switch (state){
944
966
case Playing:
945
967
error = ExecuteScriptAndParse (
@@ -969,7 +991,19 @@ Error* QWebkitProxy::SetPlayerState(const ElementId& element, const PlayerState
969
991
970
992
Error* QWebkitProxy::GetPlayerVolume (const ElementId& element, double *volumeLevel) {
971
993
base::Value* volumeValue = NULL ;
972
- Error* error = GetAttribute (element, std::string (" volume" ), &volumeValue);
994
+
995
+ std::string tagName;
996
+ Error* error;
997
+ error = GetElementTagName (element, &tagName);
998
+ if (error)
999
+ return error;
1000
+
1001
+ if (tagName != " video" && tagName != " audio" ){
1002
+ error = new Error (kInvalidElementState );
1003
+ return error;
1004
+ }
1005
+
1006
+ error = GetAttribute (element, std::string (" volume" ), &volumeValue);
973
1007
scoped_ptr<base::Value> scoped_volume_value (volumeValue);
974
1008
if (error)
975
1009
return error;
@@ -983,7 +1017,18 @@ Error* QWebkitProxy::GetPlayerVolume(const ElementId& element, double *volumeLev
983
1017
Error* QWebkitProxy::SetPlayerVolume (const ElementId& element, const double level) {
984
1018
Value* value = NULL ;
985
1019
986
- Error* error = ExecuteScriptAndParse (
1020
+ std::string tagName;
1021
+ Error* error;
1022
+ error = GetElementTagName (element, &tagName);
1023
+ if (error)
1024
+ return error;
1025
+
1026
+ if (tagName != " video" && tagName != " audio" ){
1027
+ error = new Error (kInvalidElementState );
1028
+ return error;
1029
+ }
1030
+
1031
+ error = ExecuteScriptAndParse (
987
1032
GetFrame (page_, session_->current_frame ()),
988
1033
" function(elem, level) { elem.volume = level; }" ,
989
1034
" setVolume" ,
@@ -995,7 +1040,19 @@ Error* QWebkitProxy::SetPlayerVolume(const ElementId& element, const double leve
995
1040
996
1041
Error* QWebkitProxy::GetPlayingPosition (const ElementId& element, double * reletivePos) {
997
1042
base::Value* positionValue = NULL ;
998
- Error* error = GetAttribute (element, std::string (" currentTime" ), &positionValue);
1043
+
1044
+ std::string tagName;
1045
+ Error* error;
1046
+ error = GetElementTagName (element, &tagName);
1047
+ if (error)
1048
+ return error;
1049
+
1050
+ if (tagName != " video" && tagName != " audio" ){
1051
+ error = new Error (kInvalidElementState );
1052
+ return error;
1053
+ }
1054
+
1055
+ error = GetAttribute (element, std::string (" currentTime" ), &positionValue);
999
1056
scoped_ptr<base::Value> scoped_position_value (positionValue);
1000
1057
if (error)
1001
1058
return error;
@@ -1009,7 +1066,18 @@ Error* QWebkitProxy::GetPlayingPosition(const ElementId& element, double* releti
1009
1066
Error* QWebkitProxy::SetPlayingPosition (const ElementId& element, const double reletivePos) {
1010
1067
Value* value = NULL ;
1011
1068
1012
- Error* error = ExecuteScriptAndParse (
1069
+ std::string tagName;
1070
+ Error* error;
1071
+ error = GetElementTagName (element, &tagName);
1072
+ if (error)
1073
+ return error;
1074
+
1075
+ if (tagName != " video" && tagName != " audio" ){
1076
+ error = new Error (kInvalidElementState );
1077
+ return error;
1078
+ }
1079
+
1080
+ error = ExecuteScriptAndParse (
1013
1081
GetFrame (page_, session_->current_frame ()),
1014
1082
" function(elem, time) { elem.currentTime = time; }" ,
1015
1083
" setPosition" ,
@@ -1023,7 +1091,18 @@ Error* QWebkitProxy::SetPlayingPosition(const ElementId& element, const double r
1023
1091
Error *QWebkitProxy::GetPlaybackSpeed (const ElementId &element, double *speed)
1024
1092
{
1025
1093
base::Value* speedValue = NULL ;
1026
- Error* error = GetAttribute (element, std::string (" playbackRate" ), &speedValue);
1094
+ std::string tagName;
1095
+ Error* error;
1096
+ error = GetElementTagName (element, &tagName);
1097
+ if (error)
1098
+ return error;
1099
+
1100
+ if (tagName != " video" && tagName != " audio" ){
1101
+ error = new Error (kInvalidElementState );
1102
+ return error;
1103
+ }
1104
+
1105
+ error = GetAttribute (element, std::string (" playbackRate" ), &speedValue);
1027
1106
scoped_ptr<base::Value> scoped_position_value (speedValue);
1028
1107
if (error)
1029
1108
return error;
@@ -1038,7 +1117,17 @@ Error *QWebkitProxy::SetPlaybackSpeed(const ElementId &element, const double spe
1038
1117
{
1039
1118
Value* value = NULL ;
1040
1119
1041
- Error* error = ExecuteScriptAndParse (
1120
+ std::string tagName;
1121
+ Error *error = GetElementTagName (element, &tagName);
1122
+ if (error)
1123
+ return error;
1124
+
1125
+ if (tagName != " video" && tagName != " audio" ){
1126
+ error = new Error (kInvalidElementState );
1127
+ return error;
1128
+ }
1129
+
1130
+ error = ExecuteScriptAndParse (
1042
1131
GetFrame (page_, session_->current_frame ()),
1043
1132
" function(elem, speed) { elem.playbackRate = speed; }" ,
1044
1133
" setPlaybackRate" ,
@@ -1052,7 +1141,17 @@ Error *QWebkitProxy::SetPlaybackSpeed(const ElementId &element, const double spe
1052
1141
Error* QWebkitProxy::SetMute (const ElementId& element, bool mute) {
1053
1142
Value* value = NULL ;
1054
1143
1055
- Error* error = ExecuteScriptAndParse (
1144
+ std::string tagName;
1145
+ Error *error = GetElementTagName (element, &tagName);
1146
+ if (error)
1147
+ return error;
1148
+
1149
+ if (tagName != " video" && tagName != " audio" ){
1150
+ error = new Error (kInvalidElementState );
1151
+ return error;
1152
+ }
1153
+
1154
+ error = ExecuteScriptAndParse (
1056
1155
GetFrame (page_, session_->current_frame ()),
1057
1156
" function(elem, mute) { elem.muted = mute; }" ,
1058
1157
" setVolume" ,
@@ -1065,7 +1164,18 @@ Error* QWebkitProxy::SetMute(const ElementId& element, bool mute) {
1065
1164
1066
1165
Error* QWebkitProxy::GetMute (const ElementId& element, bool * mute) {
1067
1166
base::Value* isMutedValue = NULL ;
1068
- Error* error = GetAttribute (element, std::string (" muted" ), &isMutedValue);
1167
+
1168
+ std::string tagName;
1169
+ Error *error = GetElementTagName (element, &tagName);
1170
+ if (error)
1171
+ return error;
1172
+
1173
+ if (tagName != " video" && tagName != " audio" ){
1174
+ error = new Error (kInvalidElementState );
1175
+ return error;
1176
+ }
1177
+
1178
+ error = GetAttribute (element, std::string (" muted" ), &isMutedValue);
1069
1179
scoped_ptr<Value> scoped_value (isMutedValue);
1070
1180
if (error)
1071
1181
return error;
0 commit comments