@@ -907,8 +907,19 @@ Error* QWebkitProxy::GetBrowserLog(base::ListValue** browserLog) {
907907
908908Error* QWebkitProxy::GetPlayerState (const ElementId& element, PlayerState *state) {
909909 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+
910921 base::Value* isPausedValue = NULL ;
911- Error* error = GetAttribute (element, std::string (" paused" ), &isPausedValue);
922+ error = GetAttribute (element, std::string (" paused" ), &isPausedValue);
912923 scoped_ptr<base::Value> scoped_isPausedValue (isPausedValue);
913924 if (error)
914925 return error;
@@ -940,6 +951,17 @@ Error* QWebkitProxy::GetPlayerState(const ElementId& element, PlayerState *state
940951Error* QWebkitProxy::SetPlayerState (const ElementId& element, const PlayerState state) {
941952 Value* value = NULL ;
942953 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+
943965 switch (state){
944966 case Playing:
945967 error = ExecuteScriptAndParse (
@@ -969,7 +991,19 @@ Error* QWebkitProxy::SetPlayerState(const ElementId& element, const PlayerState
969991
970992Error* QWebkitProxy::GetPlayerVolume (const ElementId& element, double *volumeLevel) {
971993 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);
9731007 scoped_ptr<base::Value> scoped_volume_value (volumeValue);
9741008 if (error)
9751009 return error;
@@ -983,7 +1017,18 @@ Error* QWebkitProxy::GetPlayerVolume(const ElementId& element, double *volumeLev
9831017Error* QWebkitProxy::SetPlayerVolume (const ElementId& element, const double level) {
9841018 Value* value = NULL ;
9851019
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 (
9871032 GetFrame (page_, session_->current_frame ()),
9881033 " function(elem, level) { elem.volume = level; }" ,
9891034 " setVolume" ,
@@ -995,7 +1040,19 @@ Error* QWebkitProxy::SetPlayerVolume(const ElementId& element, const double leve
9951040
9961041Error* QWebkitProxy::GetPlayingPosition (const ElementId& element, double * reletivePos) {
9971042 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);
9991056 scoped_ptr<base::Value> scoped_position_value (positionValue);
10001057 if (error)
10011058 return error;
@@ -1009,7 +1066,18 @@ Error* QWebkitProxy::GetPlayingPosition(const ElementId& element, double* releti
10091066Error* QWebkitProxy::SetPlayingPosition (const ElementId& element, const double reletivePos) {
10101067 Value* value = NULL ;
10111068
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 (
10131081 GetFrame (page_, session_->current_frame ()),
10141082 " function(elem, time) { elem.currentTime = time; }" ,
10151083 " setPosition" ,
@@ -1023,7 +1091,18 @@ Error* QWebkitProxy::SetPlayingPosition(const ElementId& element, const double r
10231091Error *QWebkitProxy::GetPlaybackSpeed (const ElementId &element, double *speed)
10241092{
10251093 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);
10271106 scoped_ptr<base::Value> scoped_position_value (speedValue);
10281107 if (error)
10291108 return error;
@@ -1038,7 +1117,17 @@ Error *QWebkitProxy::SetPlaybackSpeed(const ElementId &element, const double spe
10381117{
10391118 Value* value = NULL ;
10401119
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 (
10421131 GetFrame (page_, session_->current_frame ()),
10431132 " function(elem, speed) { elem.playbackRate = speed; }" ,
10441133 " setPlaybackRate" ,
@@ -1052,7 +1141,17 @@ Error *QWebkitProxy::SetPlaybackSpeed(const ElementId &element, const double spe
10521141Error* QWebkitProxy::SetMute (const ElementId& element, bool mute) {
10531142 Value* value = NULL ;
10541143
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 (
10561155 GetFrame (page_, session_->current_frame ()),
10571156 " function(elem, mute) { elem.muted = mute; }" ,
10581157 " setVolume" ,
@@ -1065,7 +1164,18 @@ Error* QWebkitProxy::SetMute(const ElementId& element, bool mute) {
10651164
10661165Error* QWebkitProxy::GetMute (const ElementId& element, bool * mute) {
10671166 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);
10691179 scoped_ptr<Value> scoped_value (isMutedValue);
10701180 if (error)
10711181 return error;
0 commit comments