MCPcopy Create free account
hub / github.com/CyanogenMod/android_frameworks_base / writeProguardForLayouts

Function writeProguardForLayouts

tools/aapt/Resource.cpp:2528–2584  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2526}
2527
2528status_t
2529writeProguardForLayouts(ProguardKeepSet* keep, const sp<AaptAssets>& assets)
2530{
2531 status_t err;
2532
2533 // tag:attribute pairs that should be checked in layout files.
2534 KeyedVector<String8, Vector<NamespaceAttributePair> > kLayoutTagAttrPairs;
2535 addTagAttrPair(&kLayoutTagAttrPairs, "view", NULL, "class");
2536 addTagAttrPair(&kLayoutTagAttrPairs, "fragment", NULL, "class");
2537 addTagAttrPair(&kLayoutTagAttrPairs, "fragment", RESOURCES_ANDROID_NAMESPACE, "name");
2538
2539 // tag:attribute pairs that should be checked in xml files.
2540 KeyedVector<String8, Vector<NamespaceAttributePair> > kXmlTagAttrPairs;
2541 addTagAttrPair(&kXmlTagAttrPairs, "PreferenceScreen", RESOURCES_ANDROID_NAMESPACE, "fragment");
2542 addTagAttrPair(&kXmlTagAttrPairs, "header", RESOURCES_ANDROID_NAMESPACE, "fragment");
2543
2544 const Vector<sp<AaptDir> >& dirs = assets->resDirs();
2545 const size_t K = dirs.size();
2546 for (size_t k=0; k<K; k++) {
2547 const sp<AaptDir>& d = dirs.itemAt(k);
2548 const String8& dirName = d->getLeaf();
2549 const char* startTag = NULL;
2550 const KeyedVector<String8, Vector<NamespaceAttributePair> >* tagAttrPairs = NULL;
2551 if ((dirName == String8("layout")) || (strncmp(dirName.string(), "layout-", 7) == 0)) {
2552 tagAttrPairs = &kLayoutTagAttrPairs;
2553 } else if ((dirName == String8("xml")) || (strncmp(dirName.string(), "xml-", 4) == 0)) {
2554 startTag = "PreferenceScreen";
2555 tagAttrPairs = &kXmlTagAttrPairs;
2556 } else if ((dirName == String8("menu")) || (strncmp(dirName.string(), "menu-", 5) == 0)) {
2557 startTag = "menu";
2558 tagAttrPairs = NULL;
2559 } else {
2560 continue;
2561 }
2562
2563 const KeyedVector<String8,sp<AaptGroup> > groups = d->getFiles();
2564 const size_t N = groups.size();
2565 for (size_t i=0; i<N; i++) {
2566 const sp<AaptGroup>& group = groups.valueAt(i);
2567 const DefaultKeyedVector<AaptGroupEntry, sp<AaptFile> >& files = group->getFiles();
2568 const size_t M = files.size();
2569 for (size_t j=0; j<M; j++) {
2570 err = writeProguardForXml(keep, files.valueAt(j), startTag, tagAttrPairs);
2571 if (err < 0) {
2572 return err;
2573 }
2574 }
2575 }
2576 }
2577 // Handle the overlays
2578 sp<AaptAssets> overlay = assets->getOverlay();
2579 if (overlay.get()) {
2580 return writeProguardForLayouts(keep, overlay);
2581 }
2582
2583 return NO_ERROR;
2584}
2585

Callers 1

writeProguardFileFunction · 0.85

Calls 7

addTagAttrPairFunction · 0.85
writeProguardForXmlFunction · 0.85
stringMethod · 0.80
sizeMethod · 0.65
getMethod · 0.65
valueAtMethod · 0.45
getOverlayMethod · 0.45

Tested by

no test coverage detected