@@ -52,6 +52,13 @@ public class JavascriptObjectRepository : IJavascriptObjectRepository
5252        /// </summary> 
5353        public  bool  IsBrowserInitialized  {  get ;  set ;  } 
5454
55+         public  string  WindowPropertyName  {  get ;  set ;  } 
56+ 
57+         public  JavascriptObjectRepository ( ) 
58+         { 
59+             WindowPropertyName  =  "CefSharp" ; 
60+         } 
61+ 
5562        public  void  Dispose ( ) 
5663        { 
5764            ResolveObject  =  null ; 
@@ -404,6 +411,8 @@ internal bool TrySetProperty(long objectId, string name, object value, out strin
404411        /// <param name="camelCaseJavascriptNames">camel case the javascript names of properties/methods</param> 
405412        private  void  AnalyseObjectForBinding ( JavascriptObject  obj ,  bool  analyseMethods ,  bool  analyseProperties ,  bool  readPropertyValue ,  bool  camelCaseJavascriptNames ) 
406413        { 
414+             var  isWindowPropertyFirstCharacterLowercase  =  StringCheck . IsFirstCharacterLowercase ( WindowPropertyName ) ; 
415+ 
407416            if  ( obj . Value  ==  null ) 
408417            { 
409418                return ; 
@@ -425,7 +434,7 @@ private void AnalyseObjectForBinding(JavascriptObject obj, bool analyseMethods,
425434                        continue ; 
426435                    } 
427436
428-                     var  jsMethod  =  CreateJavaScriptMethod ( methodInfo ,  camelCaseJavascriptNames ) ; 
437+                     var  jsMethod  =  CreateJavaScriptMethod ( methodInfo ,  camelCaseJavascriptNames ,   isWindowPropertyFirstCharacterLowercase ) ; 
429438                    obj . Methods . Add ( jsMethod ) ; 
430439                } 
431440            } 
@@ -444,12 +453,12 @@ private void AnalyseObjectForBinding(JavascriptObject obj, bool analyseMethods,
444453                        continue ; 
445454                    } 
446455
447-                     var  jsProperty  =  CreateJavaScriptProperty ( propertyInfo ,  camelCaseJavascriptNames ) ; 
456+                     var  jsProperty  =  CreateJavaScriptProperty ( propertyInfo ,  camelCaseJavascriptNames ,   isWindowPropertyFirstCharacterLowercase ) ; 
448457                    if  ( jsProperty . IsComplexType ) 
449458                    { 
450459                        var  jsObject  =  CreateJavascriptObject ( camelCaseJavascriptNames ,  rootObject :  false ) ; 
451460                        jsObject . Name  =  propertyInfo . Name ; 
452-                         jsObject . JavascriptName  =  GetJavascriptName ( propertyInfo . Name ,  camelCaseJavascriptNames ) ; 
461+                         jsObject . JavascriptName  =  GetJavascriptName ( propertyInfo . Name ,  camelCaseJavascriptNames ,   isWindowPropertyFirstCharacterLowercase ) ; 
453462                        jsObject . Value  =  jsProperty . GetValue ( obj . Value ) ; 
454463                        jsProperty . JsObject  =  jsObject ; 
455464
@@ -469,12 +478,12 @@ private void RaiseResolveObjectEvent(string name)
469478            ResolveObject ? . Invoke ( this ,  new  JavascriptBindingEventArgs ( this ,  name ) ) ; 
470479        } 
471480
472-         private  static   JavascriptMethod  CreateJavaScriptMethod ( MethodInfo  methodInfo ,  bool  camelCaseJavascriptNames ) 
481+         private  static   JavascriptMethod  CreateJavaScriptMethod ( MethodInfo  methodInfo ,  bool  camelCaseJavascriptNames ,   bool   isWindowPropertyCamelCase ) 
473482        { 
474483            var  jsMethod  =  new  JavascriptMethod ( ) ; 
475484
476485            jsMethod . ManagedName  =  methodInfo . Name ; 
477-             jsMethod . JavascriptName  =  GetJavascriptName ( methodInfo . Name ,  camelCaseJavascriptNames ) ; 
486+             jsMethod . JavascriptName  =  GetJavascriptName ( methodInfo . Name ,  camelCaseJavascriptNames ,   isWindowPropertyCamelCase ) ; 
478487            jsMethod . Function  =  methodInfo . Invoke ; 
479488            jsMethod . ParameterCount  =  methodInfo . GetParameters ( ) . Length ; 
480489            jsMethod . Parameters  =  methodInfo . GetParameters ( ) 
@@ -489,12 +498,12 @@ private static JavascriptMethod CreateJavaScriptMethod(MethodInfo methodInfo, bo
489498            return  jsMethod ; 
490499        } 
491500
492-         private  static   JavascriptProperty  CreateJavaScriptProperty ( PropertyInfo  propertyInfo ,  bool  camelCaseJavascriptNames ) 
501+         private  static   JavascriptProperty  CreateJavaScriptProperty ( PropertyInfo  propertyInfo ,  bool  camelCaseJavascriptNames ,   bool   isWindowPropertyCamelCase ) 
493502        { 
494503            var  jsProperty  =  new  JavascriptProperty ( ) ; 
495504
496505            jsProperty . ManagedName  =  propertyInfo . Name ; 
497-             jsProperty . JavascriptName  =  GetJavascriptName ( propertyInfo . Name ,  camelCaseJavascriptNames ) ; 
506+             jsProperty . JavascriptName  =  GetJavascriptName ( propertyInfo . Name ,  camelCaseJavascriptNames ,   isWindowPropertyCamelCase ) ; 
498507            jsProperty . SetValue  =  ( o ,  v )  =>  propertyInfo . SetValue ( o ,  v ,  null ) ; 
499508            jsProperty . GetValue  =  ( o )  =>  propertyInfo . GetValue ( o ,  null ) ; 
500509
@@ -533,13 +542,21 @@ private static bool IsComplexType(Type type)
533542            return  ! baseType . IsPrimitive  &&  baseType  !=  typeof ( string ) ; 
534543        } 
535544
536-         private  static   string  GetJavascriptName ( string  str ,  bool  camelCaseJavascriptNames ) 
545+         private  static   string  GetJavascriptName ( string  str ,  bool  camelCaseJavascriptNames ,   bool   isWindowPropertyCamelCase ) 
537546        { 
538-             if  ( ! camelCaseJavascriptNames ) 
547+             if  ( ! isWindowPropertyCamelCase ) 
539548            { 
540-                 return  str ; 
549+                 if  ( ! camelCaseJavascriptNames ) 
550+                 { 
551+                     return  str ; 
552+                 } 
541553            } 
542554
555+             return  ConvertToCamelCase ( str ) ; 
556+         } 
557+ 
558+         public  static   string  ConvertToCamelCase ( string  str ) 
559+         { 
543560            if  ( string . IsNullOrEmpty ( str ) ) 
544561            { 
545562                return  string . Empty ; 
0 commit comments