// Constructor. internal BaseVsaEngine(String language, String version, bool supportDebug) { applicationPath = String.Empty; assemblyVersion = version; compiledRootNamespace = null; engineMoniker = String.Empty; engineName = String.Empty; engineSite = null; errorLocale = CultureInfo.CurrentCulture.LCID; executionEvidence = null; failedCompilation = false; genDebugInfo = false; haveCompiledState = false; isClosed = false; isDebugInfoSupported = supportDebug; isEngineCompiled = false; isEngineDirty = false; isEngineInitialized = false; isEngineRunning = false; loadedAssembly = null; rootNamespace = String.Empty; scriptLanguage = language; startupClass = null; startupInstance = null; vsaItems = null; }
// === Constructor === public BaseVsaEngine(string language, string version, bool supportDebug) { // Set default property values and initial state this.applicationPath = ""; this.compiledRootNamespace = null; this.genDebugInfo = false; this.haveCompiledState = false; this.failedCompilation = false; this.isClosed = false; this.isEngineCompiled = false; this.isEngineDirty = false; this.isEngineInitialized = false; this.isEngineRunning = false; this.vsaItems = null; this.engineSite = null; this.errorLocale = CultureInfo.CurrentCulture.LCID; this.engineName = ""; this.rootNamespace = ""; this.engineMoniker = ""; // Set implementation-dependent values this.scriptLanguage = language; this.assemblyVersion = version; this.isDebugInfoSupported = supportDebug; this.executionEvidence = null; }
// === Constructor === public BaseVsaEngine(string language, string version, bool supportDebug){ // Set default property values and initial state this.applicationPath = ""; this.compiledRootNamespace = null; this.genDebugInfo = false; this.haveCompiledState = false; this.failedCompilation = false; this.isClosed = false; this.isEngineCompiled = false; this.isEngineDirty = false; this.isEngineInitialized = false; this.isEngineRunning = false; this.vsaItems = null; this.engineSite = null; this.errorLocale = CultureInfo.CurrentCulture.LCID; this.engineName = ""; this.rootNamespace = ""; this.engineMoniker = ""; // Set implementation-dependent values this.scriptLanguage = language; this.assemblyVersion = version; this.isDebugInfoSupported = supportDebug; this.executionEvidence = null; }
public BaseVsaEngine(string language, string version, bool supportDebug) { this.language = language; // FIXME: I think we must ensure that version it's // compliant with versionformat Major.Minor.Build.Revision. // Not sure about what Exception throw. this.version = version; this.supportDebug = supportDebug; this.site = null; this.rootMoniker = ""; this.running = false; this.evidence = null; this.compiled = false; this.dirty = false; this.lcid = Thread.CurrentThread.CurrentCulture.LCID; this.name = ""; this.rootNamespace = ""; this.namespaceNotSet = true; this.initNewCalled = false; this.generateDebugInfo = false; this.closed = false; this.items = null; this.siteAlreadySet = false; }
/// <summary> /// This method loads the import dlls that a script needs to run. /// </summary> /// <param name="IVsaItems">Reference items added to the .NET script engine.</param> public override void LoadAssemblies(IVsaItems items) { string assemblyName; // system.dll assemblyName = "system.dll"; IVsaReferenceItem refItem = (IVsaReferenceItem)items.CreateItem(assemblyName, VsaItemType.Reference, VsaItemFlag.None); refItem.AssemblyName = assemblyName; // mscorlib.dll assemblyName = "mscorlib.dll"; refItem = (IVsaReferenceItem)items.CreateItem(assemblyName, VsaItemType.Reference, VsaItemFlag.None); refItem.AssemblyName = assemblyName; // system.windows.forms.dll assemblyName = "system.windows.forms.dll"; refItem = (IVsaReferenceItem)items.CreateItem(assemblyName, VsaItemType.Reference, VsaItemFlag.None); refItem.AssemblyName = assemblyName; }
private bool _LoadScript(string sScriptFilename) { if (!CONFIG.bLoadScript) { return(false); } if (string.IsNullOrEmpty(sScriptFilename)) { return(false); } if (!File.Exists(sScriptFilename)) { return(false); } _scriptCount++; if (this._BeforeRulesCompile != null) { this._BeforeRulesCompile(sScriptFilename); } foreach (object obj2 in htMenuScripts.Keys) { ((MenuItem)obj2).Parent.MenuItems.RemoveAt(((MenuItem)obj2).Index); } htMenuScripts.Clear(); foreach (PreferenceBag.PrefWatcher watcher in this.listWeaklyHeldWatchers) { FiddlerApplication.Prefs.RemoveWatcher(watcher); } this.listWeaklyHeldWatchers.Clear(); StreamReader reader = new StreamReader(new FileStream(sScriptFilename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), Encoding.UTF8, true); string str = reader.ReadToEnd(); reader.Close(); try { this._engine = new VsaEngine(); this._engine.RootMoniker = "fiddler://script/" + _scriptCount; this._engine.Site = this.objVSASite; this._engine.InitNew(); this._engine.RootNamespace = "Fiddler.ScriptNamespace"; this._engine.GenerateDebugInfo = false; } catch (EntryPointNotFoundException) { FiddlerApplication.DoNotifyUser("Unable to initialize FiddlerScript. This typically indicates that you are attempting to run Fiddler on .NET Framework v4.\n\nYour machine may have the unsupported OnlyUseLatestCLR registry key set.", "Unsupported configuration", MessageBoxIcon.Hand); this.Ready = false; return(false); } IVsaItems items = this._engine.Items; foreach (string str2 in CONFIG.sScriptReferences.Split(new char[] { ';' })) { if (str2.Trim().Length > 0) { IVsaReferenceItem item = (IVsaReferenceItem)items.CreateItem(str2, VsaItemType.Reference, VsaItemFlag.None); item.AssemblyName = str2; } } IVsaGlobalItem item2 = (IVsaGlobalItem)items.CreateItem("FiddlerObject", VsaItemType.AppGlobal, VsaItemFlag.None); item2.TypeString = "Fiddler.FiddlerScript"; item2 = (IVsaGlobalItem)items.CreateItem("FiddlerScript", VsaItemType.AppGlobal, VsaItemFlag.None); item2.TypeString = "Fiddler.FiddlerScript"; IVsaCodeItem item3 = (IVsaCodeItem)items.CreateItem("Handlers", VsaItemType.Code, VsaItemFlag.None); item3.SourceText = str; if (!this._engine.Compile()) { this.Ready = false; return(false); } this._engine.Run(); this.Ready = true; this._typeScriptHandlers = this._engine.Assembly.GetType("Fiddler.ScriptNamespace.Handlers"); if (this._typeScriptHandlers == null) { this._ClearCachedMethodPointers(); } else { this._ExtractMethodPointersFromScript(); foreach (FieldInfo info in this._typeScriptHandlers.GetFields(BindingFlags.Public | BindingFlags.Static)) { if (info.FieldType == typeof(bool)) { RulesOption customAttribute = (RulesOption)Attribute.GetCustomAttribute(info, typeof(RulesOption)); if (customAttribute != null) { this.CreateRulesMenuItem(info, customAttribute); } } else if (info.FieldType == typeof(string)) { RulesString oRule = (RulesString)Attribute.GetCustomAttribute(info, typeof(RulesString)); if (oRule != null) { RulesStringValue[] customAttributes = (RulesStringValue[])Attribute.GetCustomAttributes(info, typeof(RulesStringValue)); if ((customAttributes != null) && (customAttributes.Length > 0)) { Array.Sort <RulesStringValue>(customAttributes); this.CreateRulesMenuForStrings(info, oRule, customAttributes); } } } } bool flag = true; foreach (MethodInfo info2 in this._typeScriptHandlers.GetMethods()) { MenuItem item4; ToolsAction action = (ToolsAction)Attribute.GetCustomAttribute(info2, typeof(ToolsAction)); if (action != null) { item4 = new MenuItem(action.Name); htMenuScripts.Add(item4, info2); item4.Click += new EventHandler(this.HandleScriptToolsClick); FiddlerApplication._frmMain.mnuTools.MenuItems.Add(item4); } ContextAction action2 = (ContextAction)Attribute.GetCustomAttribute(info2, typeof(ContextAction)); if (action2 != null) { if (flag) { item4 = new MenuItem("-"); htMenuScripts.Add(item4, null); FiddlerApplication._frmMain.mnuSessionContext.MenuItems.Add(0, item4); flag = false; } item4 = new MenuItem(action2.Name); htMenuScripts.Add(item4, info2); item4.Click += new EventHandler(this.HandleScriptToolsClick); FiddlerApplication._frmMain.mnuSessionContext.MenuItems.Add(0, item4); } BindUIColumn column = (BindUIColumn)Attribute.GetCustomAttribute(info2, typeof(BindUIColumn)); if (column != null) { getColumnStringDelegate delFn = (getColumnStringDelegate)Delegate.CreateDelegate(typeof(getColumnStringDelegate), info2); FiddlerApplication._frmMain.lvSessions.AddBoundColumn(column._colName, column._iColWidth, delFn); } QuickLinkMenu menu = (QuickLinkMenu)Attribute.GetCustomAttribute(info2, typeof(QuickLinkMenu)); if (menu != null) { QuickLinkItem[] array = (QuickLinkItem[])Attribute.GetCustomAttributes(info2, typeof(QuickLinkItem)); if ((array != null) && (array.Length > 0)) { Array.Sort <QuickLinkItem>(array); this.CreateQuickLinkMenu(menu.Name, info2, menu.Name, array); } } } MenuExt.ReadRegistry(FiddlerApplication._frmMain.mnuTools, htMenuScripts); try { MethodInfo method = this._typeScriptHandlers.GetMethod("Main"); if (method != null) { method.Invoke(null, null); } } catch (Exception exception) { FiddlerApplication.DoNotifyUser(string.Concat(new object[] { "There was a problem with your FiddlerScript.\n\n", exception.Message, "\n", exception.StackTrace, "\n\n", exception.InnerException }), "JScript main() failed."); } } if (this._AfterRulesCompile != null) { this._AfterRulesCompile(); } return(true); }
public BaseVsaEngine (string language, string version, bool supportDebug) { this.language = language; // FIXME: I think we must ensure that version it's // compliant with versionformat Major.Minor.Build.Revision. // Not sure about what Exception throw. this.version = version; this.supportDebug = supportDebug; this.site = null; this.rootMoniker = ""; this.running = false; this.evidence = null; this.compiled = false; this.dirty = false; this.lcid = Thread.CurrentThread.CurrentCulture.LCID; this.name = ""; this.rootNamespace = ""; this.namespaceNotSet = true; this.initNewCalled = false; this.generateDebugInfo = false; this.closed = false; this.items = null; this.siteAlreadySet = false; }