| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "bin/dartutils.h" | 5 #include "bin/dartutils.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "include/dart_native_api.h" | 8 #include "include/dart_native_api.h" |
| 9 | 9 |
| 10 #include "platform/assert.h" | 10 #include "platform/assert.h" |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 bool DartUtils::IsDartIOLibURL(const char* url_name) { | 167 bool DartUtils::IsDartIOLibURL(const char* url_name) { |
| 168 return (strcmp(url_name, kIOLibURL) == 0); | 168 return (strcmp(url_name, kIOLibURL) == 0); |
| 169 } | 169 } |
| 170 | 170 |
| 171 | 171 |
| 172 bool DartUtils::IsDartBuiltinLibURL(const char* url_name) { | 172 bool DartUtils::IsDartBuiltinLibURL(const char* url_name) { |
| 173 return (strcmp(url_name, kBuiltinLibURL) == 0); | 173 return (strcmp(url_name, kBuiltinLibURL) == 0); |
| 174 } | 174 } |
| 175 | 175 |
| 176 | 176 |
| 177 Dart_Handle DartUtils::CanonicalizeURL(CommandLineOptions* url_mapping, | 177 Dart_Handle DartUtils::CanonicalizeURL(Dart_Handle library, |
| 178 Dart_Handle library, | |
| 179 const char* url_str) { | 178 const char* url_str) { |
| 180 // Get the url of the including library. | 179 // Get the url of the including library. |
| 181 Dart_Handle library_url = Dart_LibraryUrl(library); | 180 Dart_Handle library_url = Dart_LibraryUrl(library); |
| 182 if (Dart_IsError(library_url)) { | 181 if (Dart_IsError(library_url)) { |
| 183 return Dart_NewApiError("accessing library url failed"); | 182 return Dart_NewApiError("accessing library url failed"); |
| 184 } | 183 } |
| 185 if (!Dart_IsString(library_url)) { | 184 if (!Dart_IsString(library_url)) { |
| 186 return Dart_NewApiError("library url is not a string"); | 185 return Dart_NewApiError("library url is not a string"); |
| 187 } | 186 } |
| 188 const char* library_url_str = NULL; | 187 const char* library_url_str = NULL; |
| 189 Dart_Handle result = Dart_StringToCString(library_url, &library_url_str); | 188 Dart_Handle result = Dart_StringToCString(library_url, &library_url_str); |
| 190 if (Dart_IsError(result)) { | 189 if (Dart_IsError(result)) { |
| 191 return Dart_NewApiError("accessing library url characters failed"); | 190 return Dart_NewApiError("accessing library url characters failed"); |
| 192 } | 191 } |
| 193 if (url_mapping != NULL) { | |
| 194 const char* mapped_library_url_str = MapLibraryUrl(url_mapping, | |
| 195 library_url_str); | |
| 196 if (mapped_library_url_str != NULL) { | |
| 197 library_url_str = mapped_library_url_str; | |
| 198 } | |
| 199 } | |
| 200 // Calculate the canonical path. | 192 // Calculate the canonical path. |
| 201 const char* canon_url_str = GetCanonicalPath(library_url_str, url_str); | 193 const char* canon_url_str = GetCanonicalPath(library_url_str, url_str); |
| 202 Dart_Handle canon_url = NewString(canon_url_str); | 194 Dart_Handle canon_url = NewString(canon_url_str); |
| 203 free(const_cast<char*>(canon_url_str)); | 195 free(const_cast<char*>(canon_url_str)); |
| 204 | 196 |
| 205 return canon_url; | 197 return canon_url; |
| 206 } | 198 } |
| 207 | 199 |
| 208 | 200 |
| 209 void* DartUtils::OpenFile(const char* name, bool write) { | 201 void* DartUtils::OpenFile(const char* name, bool write) { |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 library); | 553 library); |
| 562 } else { | 554 } else { |
| 563 // Handle 'import' or 'part' requests for all other URIs. | 555 // Handle 'import' or 'part' requests for all other URIs. |
| 564 // Get the file path out of the url. | 556 // Get the file path out of the url. |
| 565 Dart_Handle file_path = DartUtils::FilePathFromUri(url, builtin_lib); | 557 Dart_Handle file_path = DartUtils::FilePathFromUri(url, builtin_lib); |
| 566 if (Dart_IsError(file_path)) { | 558 if (Dart_IsError(file_path)) { |
| 567 return file_path; | 559 return file_path; |
| 568 } | 560 } |
| 569 const char* final_path = NULL; | 561 const char* final_path = NULL; |
| 570 Dart_StringToCString(file_path, &final_path); | 562 Dart_StringToCString(file_path, &final_path); |
| 571 result = DartUtils::LoadSource(NULL, | 563 result = DartUtils::LoadSource(library, url, tag, final_path); |
| 572 library, | |
| 573 url, | |
| 574 tag, | |
| 575 final_path); | |
| 576 return result; | 564 return result; |
| 577 } | 565 } |
| 578 } | 566 } |
| 579 | 567 |
| 580 | 568 |
| 581 const uint8_t* DartUtils::SniffForMagicNumber(const uint8_t* text_buffer, | 569 const uint8_t* DartUtils::SniffForMagicNumber(const uint8_t* text_buffer, |
| 582 intptr_t* buffer_len, | 570 intptr_t* buffer_len, |
| 583 bool* is_snapshot) { | 571 bool* is_snapshot) { |
| 584 intptr_t len = sizeof(magic_number); | 572 intptr_t len = sizeof(magic_number); |
| 585 for (intptr_t i = 0; i < len; i++) { | 573 for (intptr_t i = 0; i < len; i++) { |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 returnValue = NewError("%s is not a valid UTF-8 script", script_uri); | 651 returnValue = NewError("%s is not a valid UTF-8 script", script_uri); |
| 664 } else { | 652 } else { |
| 665 returnValue = Dart_LoadScript(resolved_script_uri, source, 0, 0); | 653 returnValue = Dart_LoadScript(resolved_script_uri, source, 0, 0); |
| 666 } | 654 } |
| 667 } | 655 } |
| 668 free(const_cast<uint8_t *>(buffer)); | 656 free(const_cast<uint8_t *>(buffer)); |
| 669 return returnValue; | 657 return returnValue; |
| 670 } | 658 } |
| 671 | 659 |
| 672 | 660 |
| 673 Dart_Handle DartUtils::LoadSource(CommandLineOptions* url_mapping, | 661 Dart_Handle DartUtils::LoadSource(Dart_Handle library, |
| 674 Dart_Handle library, | |
| 675 Dart_Handle url, | 662 Dart_Handle url, |
| 676 Dart_LibraryTag tag, | 663 Dart_LibraryTag tag, |
| 677 const char* url_string) { | 664 const char* url_string) { |
| 678 bool is_http_scheme_url = DartUtils::IsHttpSchemeURL(url_string); | 665 bool is_http_scheme_url = DartUtils::IsHttpSchemeURL(url_string); |
| 679 if (url_mapping != NULL && IsDartSchemeURL(url_string)) { | |
| 680 const char* mapped_url_string = MapLibraryUrl(url_mapping, url_string); | |
| 681 if (mapped_url_string == NULL) { | |
| 682 return NewError("Do not know how to load %s", url_string); | |
| 683 } | |
| 684 // We have a URL mapping specified, just read the file that the | |
| 685 // URL mapping specifies and load it. | |
| 686 url_string = mapped_url_string; | |
| 687 } | |
| 688 Dart_Handle source; | 666 Dart_Handle source; |
| 689 if (is_http_scheme_url) { | 667 if (is_http_scheme_url) { |
| 690 // Read the file over http. | 668 // Read the file over http. |
| 691 source = DartUtils::ReadStringFromHttp(url_string); | 669 source = DartUtils::ReadStringFromHttp(url_string); |
| 692 } else { | 670 } else { |
| 693 // Read the file. | 671 // Read the file. |
| 694 source = DartUtils::ReadStringFromFile(url_string); | 672 source = DartUtils::ReadStringFromFile(url_string); |
| 695 } | 673 } |
| 696 if (Dart_IsError(source)) { | 674 if (Dart_IsError(source)) { |
| 697 return source; // source contains the error string. | 675 return source; // source contains the error string. |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1118 new CObjectString(CObject::NewString(os_error->message())); | 1096 new CObjectString(CObject::NewString(os_error->message())); |
| 1119 CObjectArray* result = new CObjectArray(CObject::NewArray(3)); | 1097 CObjectArray* result = new CObjectArray(CObject::NewArray(3)); |
| 1120 result->SetAt(0, new CObjectInt32(CObject::NewInt32(kOSError))); | 1098 result->SetAt(0, new CObjectInt32(CObject::NewInt32(kOSError))); |
| 1121 result->SetAt(1, new CObjectInt32(CObject::NewInt32(os_error->code()))); | 1099 result->SetAt(1, new CObjectInt32(CObject::NewInt32(os_error->code()))); |
| 1122 result->SetAt(2, error_message); | 1100 result->SetAt(2, error_message); |
| 1123 return result; | 1101 return result; |
| 1124 } | 1102 } |
| 1125 | 1103 |
| 1126 } // namespace bin | 1104 } // namespace bin |
| 1127 } // namespace dart | 1105 } // namespace dart |
| OLD | NEW |