aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/devtools.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/devtools.rs')
-rw-r--r--components/script/devtools.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/components/script/devtools.rs b/components/script/devtools.rs
index 3307eb20dc3..2211df2931b 100644
--- a/components/script/devtools.rs
+++ b/components/script/devtools.rs
@@ -20,11 +20,14 @@ use page::{IterablePage, Page};
use ipc_channel::ipc::IpcSender;
use msg::constellation_msg::PipelineId;
use script_task::{get_page, ScriptTask};
-use js::jsapi::RootedValue;
+use js::jsapi::{ObjectClassName, RootedObject, RootedValue};
use js::jsval::UndefinedValue;
-
+use std::ffi::CStr;
use std::rc::Rc;
+use std::str;
+use uuid::Uuid;
+#[allow(unsafe_code)]
pub fn handle_evaluate_js(global: &GlobalRef, eval: String, reply: IpcSender<EvaluateJSReply>) {
let cx = global.get_cx();
let mut rval = RootedValue::new(cx, UndefinedValue());
@@ -43,7 +46,15 @@ pub fn handle_evaluate_js(global: &GlobalRef, eval: String, reply: IpcSender<Eva
EvaluateJSReply::NullValue
} else {
assert!(rval.ptr.is_object());
- panic!("object values unimplemented")
+
+ let obj = RootedObject::new(cx, rval.ptr.to_object());
+ let class_name = unsafe { CStr::from_ptr(ObjectClassName(cx, obj.handle())) };
+ let class_name = str::from_utf8(class_name.to_bytes()).unwrap();
+
+ EvaluateJSReply::ActorValue {
+ class: class_name.to_owned(),
+ uuid: Uuid::new_v4().to_string(),
+ }
}).unwrap();
}