Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: Source/WebCore/inspector/CodeGeneratorInspector.pm

Issue 7062044: Merge 86507 - 2011-05-15 Ilya Tikhonovsky <loislo@chromium.org> (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/742/
Patch Set: Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « LayoutTests/platform/win/Skipped ('k') | Source/WebCore/inspector/InspectorController.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 package CodeGeneratorInspector; 5 package CodeGeneratorInspector;
6 6
7 use strict; 7 use strict;
8 8
9 use Class::Struct; 9 use Class::Struct;
10 use File::stat; 10 use File::stat;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 "domainAccessor" => "m_timelineAgent", 86 "domainAccessor" => "m_timelineAgent",
87 }; 87 };
88 88
89 $typeTransform{"Frontend"} = { 89 $typeTransform{"Frontend"} = {
90 "forward" => "InspectorFrontend", 90 "forward" => "InspectorFrontend",
91 "header" => "InspectorFrontend.h", 91 "header" => "InspectorFrontend.h",
92 }; 92 };
93 $typeTransform{"PassRefPtr"} = { 93 $typeTransform{"PassRefPtr"} = {
94 "forwardHeader" => "wtf/PassRefPtr.h", 94 "forwardHeader" => "wtf/PassRefPtr.h",
95 }; 95 };
96 $typeTransform{"RefCounted"} = {
97 "forwardHeader" => "wtf/RefCounted.h",
98 };
96 $typeTransform{"InspectorFrontendChannel"} = { 99 $typeTransform{"InspectorFrontendChannel"} = {
97 "forward" => "InspectorFrontendChannel", 100 "forward" => "InspectorFrontendChannel",
98 "header" => "InspectorFrontendChannel.h", 101 "header" => "InspectorFrontendChannel.h",
99 }; 102 };
100 $typeTransform{"Object"} = { 103 $typeTransform{"Object"} = {
101 "param" => "PassRefPtr<InspectorObject>", 104 "param" => "PassRefPtr<InspectorObject>",
102 "variable" => "RefPtr<InspectorObject>", 105 "variable" => "RefPtr<InspectorObject>",
103 "defaultValue" => "InspectorObject::create()", 106 "defaultValue" => "InspectorObject::create()",
104 "forward" => "InspectorObject", 107 "forward" => "InspectorObject",
105 "header" => "InspectorValues.h", 108 "header" => "InspectorValues.h",
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 209
207 my $codeGenerator; 210 my $codeGenerator;
208 my $outputDir; 211 my $outputDir;
209 my $outputHeadersDir; 212 my $outputHeadersDir;
210 my $writeDependencies; 213 my $writeDependencies;
211 my $verbose; 214 my $verbose;
212 215
213 my $namespace; 216 my $namespace;
214 217
215 my $backendClassName; 218 my $backendClassName;
219 my $backendClassDeclaration;
216 my $backendJSStubName; 220 my $backendJSStubName;
217 my %backendTypes; 221 my %backendTypes;
218 my @backendMethods; 222 my @backendMethods;
219 my @backendMethodsImpl; 223 my @backendMethodsImpl;
220 my %backendMethodSignatures; 224 my %backendMethodSignatures;
221 my $backendConstructor; 225 my $backendConstructor;
222 my @backendConstantDeclarations; 226 my @backendConstantDeclarations;
223 my @backendConstantDefinitions; 227 my @backendConstantDefinitions;
224 my @backendFooter; 228 my @backendFooter;
225 my @backendJSStubs; 229 my @backendJSStubs;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 270
267 $frontendClassName = "InspectorFrontend"; 271 $frontendClassName = "InspectorFrontend";
268 $frontendConstructor = " ${frontendClassName}(InspectorFrontendChannel*); "; 272 $frontendConstructor = " ${frontendClassName}(InspectorFrontendChannel*); ";
269 push(@frontendFooter, "private:"); 273 push(@frontendFooter, "private:");
270 push(@frontendFooter, " InspectorFrontendChannel* m_inspectorFrontendChan nel;"); 274 push(@frontendFooter, " InspectorFrontendChannel* m_inspectorFrontendChan nel;");
271 $frontendTypes{"String"} = 1; 275 $frontendTypes{"String"} = 1;
272 $frontendTypes{"InspectorFrontendChannel"} = 1; 276 $frontendTypes{"InspectorFrontendChannel"} = 1;
273 $frontendTypes{"PassRefPtr"} = 1; 277 $frontendTypes{"PassRefPtr"} = 1;
274 278
275 $backendClassName = "InspectorBackendDispatcher"; 279 $backendClassName = "InspectorBackendDispatcher";
280 $backendClassDeclaration = "InspectorBackendDispatcher: public RefCounted<In spectorBackendDispatcher>";
276 $backendJSStubName = "InspectorBackendStub"; 281 $backendJSStubName = "InspectorBackendStub";
277 $backendTypes{"Inspector"} = 1; 282 $backendTypes{"Inspector"} = 1;
278 $backendTypes{"InspectorFrontendChannel"} = 1; 283 $backendTypes{"InspectorFrontendChannel"} = 1;
279 $backendTypes{"PassRefPtr"} = 1; 284 $backendTypes{"PassRefPtr"} = 1;
285 $backendTypes{"RefCounted"} = 1;
280 $backendTypes{"Object"} = 1; 286 $backendTypes{"Object"} = 1;
281 } 287 }
282 288
283 # Params: 'idlDocument' struct 289 # Params: 'idlDocument' struct
284 sub GenerateInterface 290 sub GenerateInterface
285 { 291 {
286 my $object = shift; 292 my $object = shift;
287 my $interface = shift; 293 my $interface = shift;
288 my $defines = shift; 294 my $defines = shift;
289 295
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 push(@function, " ${functionName}Message->setString(\"method\", \"$domain .$functionName\");"); 383 push(@function, " ${functionName}Message->setString(\"method\", \"$domain .$functionName\");");
378 if (scalar(@argsFiltered)) { 384 if (scalar(@argsFiltered)) {
379 push(@function, " RefPtr<InspectorObject> paramsObject = InspectorObj ect::create();"); 385 push(@function, " RefPtr<InspectorObject> paramsObject = InspectorObj ect::create();");
380 386
381 foreach my $parameter (@argsFiltered) { 387 foreach my $parameter (@argsFiltered) {
382 my $optional = $parameter->extendedAttributes->{"optional"} ? "if (" . $parameter->name . ")\n " : ""; 388 my $optional = $parameter->extendedAttributes->{"optional"} ? "if (" . $parameter->name . ")\n " : "";
383 push(@function, " " . $optional . "paramsObject->set" . typeTrait s($parameter->type, "JSONType") . "(\"" . $parameter->name . "\", " . $parameter ->name . ");"); 389 push(@function, " " . $optional . "paramsObject->set" . typeTrait s($parameter->type, "JSONType") . "(\"" . $parameter->name . "\", " . $parameter ->name . ");");
384 } 390 }
385 push(@function, " ${functionName}Message->setObject(\"params\", param sObject);"); 391 push(@function, " ${functionName}Message->setObject(\"params\", param sObject);");
386 } 392 }
387 push(@function, " m_inspectorFrontendChannel->sendMessageToFrontend(${fun ctionName}Message->toJSONString());"); 393 push(@function, " if (m_inspectorFrontendChannel)");
394 push(@function, " m_inspectorFrontendChannel->sendMessageToFrontend($ {functionName}Message->toJSONString());");
388 push(@function, "}"); 395 push(@function, "}");
389 push(@function, ""); 396 push(@function, "");
390 push(@frontendMethodsImpl, @function); 397 push(@frontendMethodsImpl, @function);
391 } 398 }
392 399
393 sub camelCase 400 sub camelCase
394 { 401 {
395 my $value = shift; 402 my $value = shift;
396 $value =~ s/\b(\w)/\U$1/g; # make a camel-case name for type name 403 $value =~ s/\b(\w)/\U$1/g; # make a camel-case name for type name
397 $value =~ s/ //g; 404 $value =~ s/ //g;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 push(@function, " reportProtocolError(&callId, ServerError, error);") ; 489 push(@function, " reportProtocolError(&callId, ServerError, error);") ;
483 push(@function, " return;"); 490 push(@function, " return;");
484 push(@function, " }"); 491 push(@function, " }");
485 push(@function, ""); 492 push(@function, "");
486 push(@function, " RefPtr<InspectorObject> responseMessage = InspectorObje ct::create();"); 493 push(@function, " RefPtr<InspectorObject> responseMessage = InspectorObje ct::create();");
487 push(@function, " RefPtr<InspectorObject> result = InspectorObject::creat e();"); 494 push(@function, " RefPtr<InspectorObject> result = InspectorObject::creat e();");
488 push(@function, map(" result->set" . typeTraits($_->type, "JSONType") . "(\"" . $_->name . "\", out_" . $_->name . ");", @outArgs)); 495 push(@function, map(" result->set" . typeTraits($_->type, "JSONType") . "(\"" . $_->name . "\", out_" . $_->name . ");", @outArgs));
489 push(@function, " responseMessage->setObject(\"result\", result);"); 496 push(@function, " responseMessage->setObject(\"result\", result);");
490 push(@function, ""); 497 push(@function, "");
491 push(@function, " responseMessage->setNumber(\"id\", callId);"); 498 push(@function, " responseMessage->setNumber(\"id\", callId);");
492 push(@function, " m_inspectorFrontendChannel->sendMessageToFrontend(respo nseMessage->toJSONString());"); 499 push(@function, " if (m_inspectorFrontendChannel)");
500 push(@function, " m_inspectorFrontendChannel->sendMessageToFrontend(r esponseMessage->toJSONString());");
493 push(@function, "}"); 501 push(@function, "}");
494 push(@function, ""); 502 push(@function, "");
495 push(@backendMethodsImpl, @function); 503 push(@backendMethodsImpl, @function);
496 } 504 }
497 505
498 sub generateBackendReportProtocolError 506 sub generateBackendReportProtocolError
499 { 507 {
500 my $reportProtocolError = << "EOF"; 508 my $reportProtocolError = << "EOF";
501 509
502 void ${backendClassName}::reportProtocolError(const long* const callId, CommonEr rorCode code, const String& customText) const 510 void ${backendClassName}::reportProtocolError(const long* const callId, CommonEr rorCode code, const String& customText) const
(...skipping 20 matching lines...) Expand all
523 ASSERT(InspectorObject::parseJSON(s_commonErrors[code])); 531 ASSERT(InspectorObject::parseJSON(s_commonErrors[code]));
524 RefPtr<InspectorObject> error = InspectorObject::parseJSON(s_commonErrors[co de])->asObject(); 532 RefPtr<InspectorObject> error = InspectorObject::parseJSON(s_commonErrors[co de])->asObject();
525 ASSERT(error); 533 ASSERT(error);
526 error->setArray("data", data); 534 error->setArray("data", data);
527 RefPtr<InspectorObject> message = InspectorObject::create(); 535 RefPtr<InspectorObject> message = InspectorObject::create();
528 message->setObject("error", error); 536 message->setObject("error", error);
529 if (callId) 537 if (callId)
530 message->setNumber("id", *callId); 538 message->setNumber("id", *callId);
531 else 539 else
532 message->setValue("id", InspectorValue::null()); 540 message->setValue("id", InspectorValue::null());
533 m_inspectorFrontendChannel->sendMessageToFrontend(message->toJSONString()); 541 if (m_inspectorFrontendChannel)
542 m_inspectorFrontendChannel->sendMessageToFrontend(message->toJSONString( ));
534 } 543 }
535 EOF 544 EOF
536 return split("\n", $reportProtocolError); 545 return split("\n", $reportProtocolError);
537 } 546 }
538 547
539 sub generateArgumentGetters 548 sub generateArgumentGetters
540 { 549 {
541 my $type = shift; 550 my $type = shift;
542 my $json = typeTraits($type, "JSONType"); 551 my $json = typeTraits($type, "JSONType");
543 my $variable = typeTraits($type, "variable"); 552 my $variable = typeTraits($type, "variable");
(...skipping 30 matching lines...) Expand all
574 583
575 sub generateBackendDispatcher 584 sub generateBackendDispatcher
576 { 585 {
577 my @body; 586 my @body;
578 my @mapEntries = map(" dispatchMap.add(${_}Cmd, &${backendClassName}: :$_);", map ($backendMethodSignatures{$_}, @backendMethods)); 587 my @mapEntries = map(" dispatchMap.add(${_}Cmd, &${backendClassName}: :$_);", map ($backendMethodSignatures{$_}, @backendMethods));
579 my $mapEntries = join("\n", @mapEntries); 588 my $mapEntries = join("\n", @mapEntries);
580 589
581 my $backendDispatcherBody = << "EOF"; 590 my $backendDispatcherBody = << "EOF";
582 void ${backendClassName}::dispatch(const String& message) 591 void ${backendClassName}::dispatch(const String& message)
583 { 592 {
593 RefPtr<${backendClassName}> protect = this;
584 typedef void (${backendClassName}::*CallHandler)(long callId, InspectorObjec t* messageObject); 594 typedef void (${backendClassName}::*CallHandler)(long callId, InspectorObjec t* messageObject);
585 typedef HashMap<String, CallHandler> DispatchMap; 595 typedef HashMap<String, CallHandler> DispatchMap;
586 DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, ); 596 DEFINE_STATIC_LOCAL(DispatchMap, dispatchMap, );
587 long callId = 0; 597 long callId = 0;
588 598
589 if (dispatchMap.isEmpty()) { 599 if (dispatchMap.isEmpty()) {
590 $mapEntries 600 $mapEntries
591 } 601 }
592 602
593 RefPtr<InspectorValue> parsedMessage = InspectorValue::parseJSON(message); 603 RefPtr<InspectorValue> parsedMessage = InspectorValue::parseJSON(message);
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 883
874 InspectorBackend = new InspectorBackendStub(); 884 InspectorBackend = new InspectorBackendStub();
875 885
876 EOF 886 EOF
877 return split("\n", $inspectorBackendStubJS); 887 return split("\n", $inspectorBackendStubJS);
878 } 888 }
879 889
880 sub generateHeader 890 sub generateHeader
881 { 891 {
882 my $className = shift; 892 my $className = shift;
893 my $classDeclaration = shift;
883 my $types = shift; 894 my $types = shift;
884 my $constructor = shift; 895 my $constructor = shift;
885 my $constants = shift; 896 my $constants = shift;
886 my $methods = shift; 897 my $methods = shift;
887 my $footer = shift; 898 my $footer = shift;
888 899
889 my $forwardHeaders = join("\n", sort(map("#include <" . typeTraits($_, "forw ardHeader") . ">", grep(typeTraits($_, "forwardHeader"), keys %{$types})))); 900 my $forwardHeaders = join("\n", sort(map("#include <" . typeTraits($_, "forw ardHeader") . ">", grep(typeTraits($_, "forwardHeader"), keys %{$types}))));
890 my $forwardDeclarations = join("\n", sort(map("class " . typeTraits($_, "for ward") . ";", grep(typeTraits($_, "forward"), keys %{$types})))); 901 my $forwardDeclarations = join("\n", sort(map("class " . typeTraits($_, "for ward") . ";", grep(typeTraits($_, "forward"), keys %{$types}))));
891 my $constantDeclarations = join("\n", @{$constants}); 902 my $constantDeclarations = join("\n", @{$constants});
892 my $methodsDeclarations = join("\n", @{$methods}); 903 my $methodsDeclarations = join("\n", @{$methods});
893 904
894 my $headerBody = << "EOF"; 905 my $headerBody = << "EOF";
895 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 906 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
896 // Use of this source code is governed by a BSD-style license that can be 907 // Use of this source code is governed by a BSD-style license that can be
897 // found in the LICENSE file. 908 // found in the LICENSE file.
898 #ifndef ${className}_h 909 #ifndef ${className}_h
899 #define ${className}_h 910 #define ${className}_h
900 911
901 ${forwardHeaders} 912 ${forwardHeaders}
902 913
903 namespace $namespace { 914 namespace $namespace {
904 915
905 $forwardDeclarations 916 $forwardDeclarations
906 917
907 typedef String ErrorString; 918 typedef String ErrorString;
908 919
909 class $className { 920 class $classDeclaration {
910 public: 921 public:
911 $constructor 922 $constructor
912 923
913 $constantDeclarations 924 $constantDeclarations
914 $methodsDeclarations 925 $methodsDeclarations
915 926
916 $footer 927 $footer
917 }; 928 };
918 929
919 } // namespace $namespace 930 } // namespace $namespace
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 push(@arguments, "${agentClassName}* ${arg}"); 997 push(@arguments, "${agentClassName}* ${arg}");
987 } 998 }
988 999
989 my $argumentString = join(", ", @arguments); 1000 my $argumentString = join(", ", @arguments);
990 1001
991 my @backendHead; 1002 my @backendHead;
992 push(@backendHead, " ${backendClassName}(${argumentString})"); 1003 push(@backendHead, " ${backendClassName}(${argumentString})");
993 push(@backendHead, @fieldInitializers); 1004 push(@backendHead, @fieldInitializers);
994 push(@backendHead, " { }"); 1005 push(@backendHead, " { }");
995 push(@backendHead, ""); 1006 push(@backendHead, "");
1007 push(@backendHead, " void clearFrontend() { m_inspectorFrontendChannel = 0; }");
1008 push(@backendHead, "");
996 push(@backendHead, " enum CommonErrorCode {"); 1009 push(@backendHead, " enum CommonErrorCode {");
997 push(@backendHead, " ParseError = 0,"); 1010 push(@backendHead, " ParseError = 0,");
998 push(@backendHead, " InvalidRequest,"); 1011 push(@backendHead, " InvalidRequest,");
999 push(@backendHead, " MethodNotFound,"); 1012 push(@backendHead, " MethodNotFound,");
1000 push(@backendHead, " InvalidParams,"); 1013 push(@backendHead, " InvalidParams,");
1001 push(@backendHead, " InternalError,"); 1014 push(@backendHead, " InternalError,");
1002 push(@backendHead, " ServerError,"); 1015 push(@backendHead, " ServerError,");
1003 push(@backendHead, " LastEntry,"); 1016 push(@backendHead, " LastEntry,");
1004 push(@backendHead, " };"); 1017 push(@backendHead, " };");
1005 push(@backendHead, ""); 1018 push(@backendHead, "");
(...skipping 11 matching lines...) Expand all
1017 push(@backendMethodsImpl, generateBackendDispatcher()); 1030 push(@backendMethodsImpl, generateBackendDispatcher());
1018 push(@backendMethodsImpl, generateBackendReportProtocolError()); 1031 push(@backendMethodsImpl, generateBackendReportProtocolError());
1019 unshift(@frontendMethodsImpl, generateFrontendConstructorImpl(), ""); 1032 unshift(@frontendMethodsImpl, generateFrontendConstructorImpl(), "");
1020 1033
1021 open(my $SOURCE, ">$outputDir/$frontendClassName.cpp") || die "Couldn't open file $outputDir/$frontendClassName.cpp"; 1034 open(my $SOURCE, ">$outputDir/$frontendClassName.cpp") || die "Couldn't open file $outputDir/$frontendClassName.cpp";
1022 print $SOURCE join("\n", generateSource($frontendClassName, \%frontendTypes, \@frontendConstantDefinitions, \@frontendMethodsImpl)); 1035 print $SOURCE join("\n", generateSource($frontendClassName, \%frontendTypes, \@frontendConstantDefinitions, \@frontendMethodsImpl));
1023 close($SOURCE); 1036 close($SOURCE);
1024 undef($SOURCE); 1037 undef($SOURCE);
1025 1038
1026 open(my $HEADER, ">$outputHeadersDir/$frontendClassName.h") || die "Couldn't open file $outputHeadersDir/$frontendClassName.h"; 1039 open(my $HEADER, ">$outputHeadersDir/$frontendClassName.h") || die "Couldn't open file $outputHeadersDir/$frontendClassName.h";
1027 print $HEADER generateHeader($frontendClassName, \%frontendTypes, $frontendC onstructor, \@frontendConstantDeclarations, \@frontendMethods, join("\n", @front endFooter)); 1040 print $HEADER generateHeader($frontendClassName, $frontendClassName, \%front endTypes, $frontendConstructor, \@frontendConstantDeclarations, \@frontendMethod s, join("\n", @frontendFooter));
1028 close($HEADER); 1041 close($HEADER);
1029 undef($HEADER); 1042 undef($HEADER);
1030 1043
1031 # Make dispatcher methods private on the backend. 1044 # Make dispatcher methods private on the backend.
1032 push(@backendConstantDeclarations, ""); 1045 push(@backendConstantDeclarations, "");
1033 push(@backendConstantDeclarations, "private:"); 1046 push(@backendConstantDeclarations, "private:");
1034 1047
1035 foreach my $type (keys %backendTypes) { 1048 foreach my $type (keys %backendTypes) {
1036 if (typeTraits($type, "JSONType")) { 1049 if (typeTraits($type, "JSONType")) {
1037 push(@backendMethodsImpl, generateArgumentGetters($type)); 1050 push(@backendMethodsImpl, generateArgumentGetters($type));
1038 } 1051 }
1039 } 1052 }
1040 generateBackendAgentFieldsAndConstructor(); 1053 generateBackendAgentFieldsAndConstructor();
1041 1054
1042 push(@backendMethodsImpl, generateBackendMessageParser()); 1055 push(@backendMethodsImpl, generateBackendMessageParser());
1043 push(@backendMethodsImpl, ""); 1056 push(@backendMethodsImpl, "");
1044 1057
1045 push(@backendConstantDeclarations, ""); 1058 push(@backendConstantDeclarations, "");
1046 1059
1047 open($SOURCE, ">$outputDir/$backendClassName.cpp") || die "Couldn't open fil e $outputDir/$backendClassName.cpp"; 1060 open($SOURCE, ">$outputDir/$backendClassName.cpp") || die "Couldn't open fil e $outputDir/$backendClassName.cpp";
1048 print $SOURCE join("\n", generateSource($backendClassName, \%backendTypes, \ @backendConstantDefinitions, \@backendMethodsImpl)); 1061 print $SOURCE join("\n", generateSource($backendClassName, \%backendTypes, \ @backendConstantDefinitions, \@backendMethodsImpl));
1049 close($SOURCE); 1062 close($SOURCE);
1050 undef($SOURCE); 1063 undef($SOURCE);
1051 1064
1052 open($HEADER, ">$outputHeadersDir/$backendClassName.h") || die "Couldn't ope n file $outputHeadersDir/$backendClassName.h"; 1065 open($HEADER, ">$outputHeadersDir/$backendClassName.h") || die "Couldn't ope n file $outputHeadersDir/$backendClassName.h";
1053 print $HEADER join("\n", generateHeader($backendClassName, \%backendTypes, $ backendConstructor, \@backendConstantDeclarations, \@backendMethods, join("\n", @backendFooter))); 1066 print $HEADER join("\n", generateHeader($backendClassName, $backendClassDecl aration, \%backendTypes, $backendConstructor, \@backendConstantDeclarations, \@b ackendMethods, join("\n", @backendFooter)));
1054 close($HEADER); 1067 close($HEADER);
1055 undef($HEADER); 1068 undef($HEADER);
1056 1069
1057 open(my $JS_STUB, ">$outputDir/$backendJSStubName.js") || die "Couldn't open file $outputDir/$backendJSStubName.js"; 1070 open(my $JS_STUB, ">$outputDir/$backendJSStubName.js") || die "Couldn't open file $outputDir/$backendJSStubName.js";
1058 print $JS_STUB join("\n", generateBackendStubJS()); 1071 print $JS_STUB join("\n", generateBackendStubJS());
1059 close($JS_STUB); 1072 close($JS_STUB);
1060 undef($JS_STUB); 1073 undef($JS_STUB);
1061 } 1074 }
1062 1075
1063 1; 1076 1;
OLDNEW
« no previous file with comments | « LayoutTests/platform/win/Skipped ('k') | Source/WebCore/inspector/InspectorController.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698