Home | History | Annotate | Download | only in tracing
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 function TimelineModelShim() {
      6   tracing.TimelineModel.apply(this, arguments);
      7 }
      8 
      9 TimelineModelShim.prototype = {
     10   __proto__: tracing.TimelineModel.prototype,
     11 
     12   invokeMethod: function(methodName, args) {
     13     var sendToPython = function(obj) {
     14       // We use sendJSON here because domAutomationController's send() chokes on
     15       // large amounts of data. Inside of send() it converts the arg to JSON and
     16       // invokes sendJSON. The JSON conversion is what fails. This way works
     17       // around the bad code, but note that the recieving python converts from
     18       // JSON before passing it back to the pyauto test.
     19       window.domAutomationController.sendJSON(
     20           JSON.stringify(obj)
     21       );
     22     };
     23     var result;
     24     try {
     25       result = this[methodName].apply(this, JSON.parse(args));
     26     } catch( e ) {
     27       var ret = {
     28         success: false,
     29         message: 'Unspecified error',
     30       };
     31       // We'll try sending the entire exception. If that doesn't work, it's ok.
     32       try {
     33         ret.exception = JSON.stringify(e);
     34       } catch(e2) {}
     35       if( typeof(e) == 'string' || e instanceof String ) {
     36         ret.message = e;
     37       } else {
     38         if( e.stack != undefined ) ret.stack = e.stack;
     39         if( e.message != undefined ) ret.message = e.message;
     40       }
     41       sendToPython(ret);
     42       throw e;
     43     }
     44     sendToPython({
     45       success: true,
     46       data: result
     47     });
     48   }
     49 },
     50 
     51 // This causes the PyAuto ExecuteJavascript call which executed this file to
     52 // return.
     53 window.domAutomationController.send('');
     54